mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-10 05:32:40 -05:00
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
|
addiu v0, ra, -12 # calc real load address
|
||||||
# account for branch delay slot
|
# account for branch delay slot
|
||||||
# and very first 'di' instruction
|
# 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
|
la t1, relocend
|
||||||
beq t0, v0, entry_point # no relocation needed
|
or t1, t1, t3
|
||||||
|
beq t0, v0, cache_init # no relocation needed
|
||||||
nop
|
nop
|
||||||
|
|
||||||
reloc_loop:
|
reloc_loop:
|
||||||
|
|
@ -30,12 +33,7 @@ reloc_loop:
|
||||||
bne t0, t1, reloc_loop
|
bne t0, t1, reloc_loop
|
||||||
addiu t0, 4 # inc dst addr
|
addiu t0, 4 # inc dst addr
|
||||||
|
|
||||||
entry_point_jump:
|
cache_init:
|
||||||
la t0, entry_point
|
|
||||||
jr t0
|
|
||||||
nop
|
|
||||||
|
|
||||||
entry_point:
|
|
||||||
# setup caches
|
# setup caches
|
||||||
# 4-way, 256 sets, 16 bytes cacheline I/D
|
# 4-way, 256 sets, 16 bytes cacheline I/D
|
||||||
li t0, 3 # enable cache for kseg0 accesses
|
li t0, 3 # enable cache for kseg0 accesses
|
||||||
|
|
@ -91,7 +89,8 @@ stack_munge_loop:
|
||||||
addiu t0, 4
|
addiu t0, 4
|
||||||
|
|
||||||
# jump to C code with enabled interrupts
|
# jump to C code with enabled interrupts
|
||||||
j main
|
la t0, main
|
||||||
|
jr t0
|
||||||
ei
|
ei
|
||||||
|
|
||||||
.set at
|
.set at
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue