diff options
author | Marcoen Hirschberg <marcoen@gmail.com> | 2008-03-27 23:58:03 +0000 |
---|---|---|
committer | Marcoen Hirschberg <marcoen@gmail.com> | 2008-03-27 23:58:03 +0000 |
commit | 82c52302bdc664fdcb177811c65c2891d53ef73a (patch) | |
tree | 0e84d262d97cc3a3b9e9983780d51cc3c18eb0db /firmware/target/coldfire/iaudio | |
parent | 8406d92475024bec99a99371c3a8c4b243ff2015 (diff) | |
download | rockbox-82c52302bdc664fdcb177811c65c2891d53ef73a.tar.gz rockbox-82c52302bdc664fdcb177811c65c2891d53ef73a.zip |
split boot.lds and move it into the target tree
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16855 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/coldfire/iaudio')
-rw-r--r-- | firmware/target/coldfire/iaudio/boot.lds | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/firmware/target/coldfire/iaudio/boot.lds b/firmware/target/coldfire/iaudio/boot.lds new file mode 100644 index 0000000000..17b1457747 --- /dev/null +++ b/firmware/target/coldfire/iaudio/boot.lds @@ -0,0 +1,90 @@ +#include "config.h" + +ENTRY(start) +OUTPUT_FORMAT(elf32-m68k) +INPUT(target/coldfire/crt0.o) + +#define DRAMSIZE (MEMORYSIZE * 0x100000) + +#if defined(IAUDIO_X5) || defined(IAUDIO_M5) +#define DRAMORIG 0x31000000 +#define IRAMORIG 0x10000000 +#define IRAMSIZE 0x20000 +#define FLASHORIG 0x00010000 +#define FLASHSIZE 4M +#elif defined(IAUDIO_M3) +#define DRAMORIG 0x31000000 +#define IRAMORIG 0x10000000 +#define IRAMSIZE 0x18000 +#define FLASHORIG 0x00010000 +#define FLASHSIZE 4M +#endif + +MEMORY +{ + DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE + IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE + FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE +} + +SECTIONS +{ + .vectors : + { + *(.init.text) + _datacopy = .; + } > FLASH + + .data : AT ( _datacopy ) + { + _datastart = .; + KEEP(*(.resetvectors)); + *(.resetvectors); + KEEP(*(.vectors)); + *(.vectors); + . = ALIGN(0x200); + *(.icode) + *(.irodata) + *(.idata) + *(.data*) + . = ALIGN(0x4); + _dataend = .; + . = ALIGN(0x10); /* Maintain proper alignment for .text section */ + } > IRAM + + /* TRICK ALERT! Newer versions of the linker don't allow output sections + to overlap even if one of them is empty, so advance the location pointer + "by hand" */ + .text LOADADDR(.data) + SIZEOF(.data) : + { + *(.init.text) + *(.text*) + . = ALIGN(0x4); + } > FLASH + + .rodata : + { + *(.rodata*) + . = ALIGN(0x4); + _iramcopy = .; + } > FLASH + + .stack : + { + *(.stack) + _stackbegin = .; + stackbegin = .; + . += 0x2000; + _stackend = .; + stackend = .; + } > IRAM + + .bss DRAMORIG+0x800000: + { + _edata = .; + *(.ibss) + *(.bss*) + *(COMMON) + _end = .; + } > DRAM +} |