From 101d10ff6c6ee6992504700452901fd779cbb26e Mon Sep 17 00:00:00 2001 From: Marcin Bukat Date: Fri, 14 Feb 2014 08:37:01 +0100 Subject: 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 --- utils/atj2137/adfuload/test_binary/timer_irq/crt0.S | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'utils') 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 -- cgit v1.2.3