mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-10 21:55:10 -05:00
MIPS: set load address of .iram to the start of .bss so RAM doesn't get wasted
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20741 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
42c7fb6b8b
commit
dc8db2a820
2 changed files with 22 additions and 17 deletions
|
|
@ -70,7 +70,10 @@ SECTIONS
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
.iram IRAMORIG:
|
/* Set the load address of .iram at the same address as .bss
|
||||||
|
* so RAM won't be wasted as .iram in the end will get copied
|
||||||
|
* to IRAM. */
|
||||||
|
.iram IRAMORIG: AT (_edata)
|
||||||
{
|
{
|
||||||
_iramstart = .;
|
_iramstart = .;
|
||||||
*(.vectors.1);
|
*(.vectors.1);
|
||||||
|
|
@ -88,7 +91,7 @@ SECTIONS
|
||||||
KEEP(*(.vectors))
|
KEEP(*(.vectors))
|
||||||
*(.vectors);
|
*(.vectors);
|
||||||
_iramend = .;
|
_iramend = .;
|
||||||
} > IRAM AT> DRAM
|
} > IRAM
|
||||||
_iramcopy = LOADADDR(.iram);
|
_iramcopy = LOADADDR(.iram);
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,23 @@ _init_cache_loop:
|
||||||
mtc0 t0, C0_CONFIG
|
mtc0 t0, C0_CONFIG
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------------------------------------
|
||||||
|
Copy IRAM section
|
||||||
|
* copy IRAM first before BSS gets cleared, as both
|
||||||
|
have the same address
|
||||||
|
----------------------------------------------------
|
||||||
|
*/
|
||||||
|
la t0, _iramcopy
|
||||||
|
la t1, _iramstart
|
||||||
|
la t2, _iramend
|
||||||
|
_init_iram_loop:
|
||||||
|
lw t3, 0(t0)
|
||||||
|
sw t3, 0(t1)
|
||||||
|
addiu t1, 4
|
||||||
|
bne t1, t2, _init_iram_loop
|
||||||
|
addiu t0, 4
|
||||||
|
|
||||||
/*
|
/*
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
Clear BSS section
|
Clear BSS section
|
||||||
|
|
@ -143,21 +160,6 @@ _init_ibss_loop:
|
||||||
sw zero, 0(t0)
|
sw zero, 0(t0)
|
||||||
bne t0, t1, _init_ibss_loop
|
bne t0, t1, _init_ibss_loop
|
||||||
addiu t0, 4
|
addiu t0, 4
|
||||||
|
|
||||||
/*
|
|
||||||
----------------------------------------------------
|
|
||||||
Copy IRAM section
|
|
||||||
----------------------------------------------------
|
|
||||||
*/
|
|
||||||
la t0, _iramcopy
|
|
||||||
la t1, _iramstart
|
|
||||||
la t2, _iramend
|
|
||||||
_init_iram_loop:
|
|
||||||
lw t3, 0(t0)
|
|
||||||
sw t3, 0(t1)
|
|
||||||
addiu t1, 4
|
|
||||||
bne t1, t2, _init_iram_loop
|
|
||||||
addiu t0, 4
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue