diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2011-09-06 12:38:30 +0000 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2011-09-06 12:38:30 +0000 |
commit | 0b35cdd77d8c9c77a0d633561b8128dd596db818 (patch) | |
tree | 63bc83090c29c04b1c403b1f9dc5f0ac682d5aa0 /firmware/target | |
parent | 472314ba734ce2d42e14cd44ba55d7600c98d222 (diff) |
rk27xx - app linker script
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30445 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/arm/rk27xx/app.lds | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/firmware/target/arm/rk27xx/app.lds b/firmware/target/arm/rk27xx/app.lds new file mode 100644 index 0000000000..080c74fc7c --- /dev/null +++ b/firmware/target/arm/rk27xx/app.lds @@ -0,0 +1,129 @@ +#include "config.h" + +ENTRY(start) +#ifdef ROCKBOX_LITTLE_ENDIAN +OUTPUT_FORMAT(elf32-littlearm) +#else +OUTPUT_FORMAT(elf32-bigarm) +#endif +OUTPUT_ARCH(arm) +STARTUP(target/arm/rk27xx/crt0.o) + +#define PLUGINSIZE PLUGIN_BUFFER_SIZE +#define CODECSIZE CODEC_SIZE + +#define DRAMORIG 0x60000000 +#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE - CODECSIZE + +#define IRAMORIG 0x00000000 +#define IRAMSIZE 4K + +/* End of the audio buffer, where the codec buffer starts */ +#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE) +#define CODECORIG (ENDAUDIOADDR) + +/* Where the codec buffer ends, and the plugin buffer starts */ +#define ENDADDR (ENDAUDIOADDR + CODECSIZE) + +MEMORY +{ + DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE + IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE +} + +SECTIONS +{ + loadaddress = DRAMORIG; + + .intvect : { + _intvectstart = . ; + *(.intvect) + _intvectend = _newstart ; + } > IRAM AT > DRAM + _intvectcopy = LOADADDR(.intvect) ; + + .text : { + *(.init.text) + *(.text*) + *(.glue_7*) + } > DRAM + + .data : { + *(.rodata*) + *(.data*) + *(.ncdata*); + . = ALIGN(0x4); + } > DRAM + + .iram : + { + _iramstart = .; + *(.icode) + *(.irodata) + *(.idata) + . = ALIGN(0x4); + _iramend = .; + } > DRAM + _iramcopy = LOADADDR(.iram) ; + + .ibss (NOLOAD) : + { + _iedata = .; + *(.qharray) + *(.ibss) + . = ALIGN(0x4); + _iend = .; + } > DRAM + + .stack (NOLOAD) : + { + *(.stack) + _stackbegin = .; + stackbegin = .; + . += 0x2000; + _stackend = .; + stackend = .; + _irqstackbegin = .; + . += 0x400; + _irqstackend = .; + _fiqstackbegin = .; + . += 0x400; + _fiqstackend = .; + } > DRAM + + .bss (NOLOAD) : { + _edata = .; + *(.bss*); + *(.ibss); + *(.ncbss*); + *(COMMON); + . = ALIGN(0x4); + _end = .; + } > DRAM + + .audiobuf (NOLOAD) : + { + . = ALIGN(4); + _audiobuffer = .; + audiobuffer = .; + } > DRAM + + .audiobufend ENDAUDIOADDR (NOLOAD) : + { + audiobufend = .; + _audiobufend = .; + } > DRAM + + .codec CODECORIG (NOLOAD) : + { + codecbuf = .; + _codecbuf = .; + } > DRAM + + .plugin ENDADDR (NOLOAD) : + { + _pluginbuf = .; + pluginbuf = .; + } + +} |