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
This commit is contained in:
Marcin Bukat 2014-02-14 08:37:01 +01:00
parent 44afbd3ac2
commit 101d10ff6c

View file

@ -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