summaryrefslogtreecommitdiffstats
path: root/firmware/target/sh/archos/app.lds
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2009-02-20 02:33:40 +0000
committerMichael Sevakis <jethead71@rockbox.org>2009-02-20 02:33:40 +0000
commitec67912b638e0fae3cae7b4182d23db6d36c5135 (patch)
tree8101f45d02947a828d20174a45d1a6d19fafa3b2 /firmware/target/sh/archos/app.lds
parent07ae1e4fb9a1fd9d6ce9c48c5300b53e87303937 (diff)
downloadrockbox-ec67912b638e0fae3cae7b4182d23db6d36c5135.tar.gz
rockbox-ec67912b638e0fae3cae7b4182d23db6d36c5135.tar.bz2
rockbox-ec67912b638e0fae3cae7b4182d23db6d36c5135.zip
Reclaim .iram areas in DRAM by overlapping their load addresses with the uninitialized data sections. I did what I could test out-- not any flash image linker scripts or other target processors. Move any .iram copies in crt0.S's to be the first operation even if not _strictly_ necessary to be emphatic (aka. 'beware').
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20061 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/sh/archos/app.lds')
-rw-r--r--firmware/target/sh/archos/app.lds22
1 files changed, 11 insertions, 11 deletions
diff --git a/firmware/target/sh/archos/app.lds b/firmware/target/sh/archos/app.lds
index 02ed6bef77..225f11f705 100644
--- a/firmware/target/sh/archos/app.lds
+++ b/firmware/target/sh/archos/app.lds
@@ -90,6 +90,7 @@ SECTIONS
} > IRAM AT> DRAM
_iramcopy = LOADADDR(.iram);
+ _noloaddram = LOADADDR(.iram);
.ibss (NOLOAD) :
{
@@ -98,18 +99,16 @@ SECTIONS
. = ALIGN(0x4);
_iend = .;
} > IRAM
-
- /* TRICK ALERT! We want 0x2000 bytes of stack, but we set the section
- size smaller, and allow the stack to grow into the .iram copy */
- .stack ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram):
+
+ .stack _noloaddram (NOLOAD) :
{
*(.stack)
- _stackbegin = . - SIZEOF(.iram);
- . += 0x2000 - SIZEOF(.iram);
+ _stackbegin = .;
+ . += 0x2000;
_stackend = .;
} > DRAM
- .bss :
+ .bss (NOLOAD) :
{
_edata = .;
*(.bss*)
@@ -118,25 +117,26 @@ SECTIONS
_end = .;
} > DRAM
- .audiobuf ALIGN(4) :
+ .audiobuf (NOLOAD) :
{
+ . = ALIGN(4);
_audiobuffer = .;
audiobuffer = .;
} > DRAM
- .audiobufend ENDAUDIOADDR:
+ .audiobufend ENDAUDIOADDR (NOLOAD) :
{
audiobufend = .;
_audiobufend = .;
} > DRAM
- .codec ENDAUDIOADDR:
+ .codec ENDAUDIOADDR (NOLOAD) :
{
codecbuf = .;
_codecbuf = .;
}
- .plugin ENDADDR:
+ .plugin ENDADDR (NOLOAD) :
{
_pluginbuf = .;
pluginbuf = .;