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:
parent
44afbd3ac2
commit
101d10ff6c
1 changed files with 8 additions and 9 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue