diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2014-01-10 21:46:43 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-01-17 19:03:06 +0100 |
commit | b31c856b842096e5128a86a8316083190527d467 (patch) | |
tree | 648a14c99b81f279d2cc6767f262d27ed5abc1e0 /firmware/target/coldfire/app.lds | |
parent | d55e5698e587dda405ec53cceb6f3642768bd198 (diff) | |
download | rockbox-b31c856b842096e5128a86a8316083190527d467.tar.gz rockbox-b31c856b842096e5128a86a8316083190527d467.zip |
coldfire: Implement HAVE_INIT_ATTR magic
This reclaims ~6kB of ram.
Change-Id: Iafdc661b1cf4445669c08c79205043792b8d14c3
Reviewed-on: http://gerrit.rockbox.org/718
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Diffstat (limited to 'firmware/target/coldfire/app.lds')
-rw-r--r-- | firmware/target/coldfire/app.lds | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/firmware/target/coldfire/app.lds b/firmware/target/coldfire/app.lds index 5364157fdd..457c71c97c 100644 --- a/firmware/target/coldfire/app.lds +++ b/firmware/target/coldfire/app.lds @@ -20,6 +20,11 @@ STARTUP(target/coldfire/crt0.o) /* End of the audio buffer, where the codec buffer starts */ #define ENDAUDIOADDR (DRAMORIG + DRAMSIZE) +#define CODECORIG ENDAUDIOADDR + +/* .init is copied to codec buffer */ +#define INITORIG CODECORIG +#define INITSIZE CODECSIZE /* Where the codec buffer ends, and the plugin buffer starts */ #define ENDADDR (ENDAUDIOADDR + CODECSIZE) @@ -28,6 +33,7 @@ MEMORY { DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE + INIT : ORIGIN = INITORIG, LENGTH = INITSIZE } SECTIONS @@ -45,7 +51,7 @@ SECTIONS .text : { . = ALIGN(0x200); - *(.init.text) + KEEP(*(.startup*)); *(.text*) . = ALIGN(0x4); } > DRAM @@ -90,6 +96,15 @@ SECTIONS _iramcopy = LOADADDR(.iram); _noloaddram = LOADADDR(.iram); + .init : + { + _initstart = .; + *(.init*) + *(.initdata*) + _initend = .; + } > INIT AT > DRAM + _initcopy = LOADADDR(.init); + .ibss (NOLOAD) : { _iedata = .; |