atj213x: rework crt0.S in test code
Rework init code so relocation is safe for binaries linked
into cached unmapped KSEG0 region.
Change-Id: I705ee3f0334f8998237f249a2c3059d6dbe78a43
diff --git a/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S b/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S
index 7b46164..eb78ba4 100644
--- a/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S
+++ b/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S
@@ -18,9 +18,12 @@
addiu v0, ra, -12 # calc real load address
# account for branch delay slot
# and very first 'di' instruction
- la t0, relocstart
+ lui t3, 0xa000 # use KSEG1 uncached unmapped
+ la t0, relocstart # addresses as we don't know
+ or t0, t0, t3 # the state of caches
la t1, relocend
- beq t0, v0, entry_point # no relocation needed
+ or t1, t1, t3
+ beq t0, v0, cache_init # no relocation needed
nop
reloc_loop:
@@ -30,12 +33,7 @@
bne t0, t1, reloc_loop
addiu t0, 4 # inc dst addr
-entry_point_jump:
- la t0, entry_point
- jr t0
- nop
-
-entry_point:
+cache_init:
# setup caches
# 4-way, 256 sets, 16 bytes cacheline I/D
li t0, 3 # enable cache for kseg0 accesses
@@ -91,7 +89,8 @@
addiu t0, 4
# jump to C code with enabled interrupts
- j main
+ la t0, main
+ jr t0
ei
.set at