diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2014-02-14 08:37:01 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-02-14 08:37:01 +0100 |
commit | 101d10ff6c6ee6992504700452901fd779cbb26e (patch) | |
tree | 5b0872263deab63f96ad146f108c93888f90a38f | |
parent | 44afbd3ac248ec01304e54e53316667bf601ae6d (diff) | |
download | rockbox-101d10f.tar.gz rockbox-101d10f.zip |
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
-rw-r--r-- | utils/atj2137/adfuload/test_binary/timer_irq/crt0.S | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S b/utils/atj2137/adfuload/test_binary/timer_irq/crt0.S index 7b46164ab4..eb78ba4fee 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 @@ load_addr: 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 @@ reloc_loop: 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 @@ stack_munge_loop: addiu t0, 4 # jump to C code with enabled interrupts - j main + la t0, main + jr t0 ei .set at |