From b7225d165e2f62518f9f1620b887b5469970c26c Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Fri, 28 Jan 2005 12:29:21 +0000 Subject: Link file for boot loader git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5691 a1c6a512-1295-4272-9138-f99709370657 --- firmware/boot.lds | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 firmware/boot.lds (limited to 'firmware') diff --git a/firmware/boot.lds b/firmware/boot.lds new file mode 100644 index 0000000000..c61a4c836a --- /dev/null +++ b/firmware/boot.lds @@ -0,0 +1,110 @@ +#include "config.h" + +ENTRY(start) +#if CONFIG_CPU == MCF5249 +OUTPUT_FORMAT(elf32-m68k) +#else +OUTPUT_FORMAT(elf32-sh) +#endif +INPUT(crt0.o) + +#define PLUGINSIZE 0x8000 + +#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE + +#ifdef IRIVER_H100 +#define DRAMORIG 0x30000000 +#define IRAMORIG 0x10000000 +#define IRAMSIZE 0x18000 +#define FLASHORIG 0x001f0000 +#define FLASHSIZE 2M +#else +#define DRAMORIG 0x09000000 +#define IRAMORIG 0x0f000000 +#define IRAMSIZE 0x1000 +#define FLASHORIG 0x02000000 + ROM_START +#define FLASHSIZE 256K - ROM_START +#endif + +#define ENDADDR (IRAMORIG + IRAMSIZE) + +MEMORY +{ + DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE + IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE + FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE +} +SECTIONS +{ + .vectors : + { + _datacopy = .; + } > FLASH + + .data : AT ( _datacopy ) + { + _datastart = .; + *(.resetvectors); + *(.vectors); + . = ALIGN(0x200); + *(.data) + *(.icode) + *(.idata) + . = 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) + *(.rodata.str1.1) + *(.rodata.str1.4) + . = ALIGN(0x4); + _iramcopy = .; + } > FLASH + + .stack : + { + *(.stack) + _stackbegin = .; + stackbegin = .; + . += 0x2000; + _stackend = .; + stackend = .; + } > IRAM + + .bss : + { + _edata = .; + *(.bss) + *(COMMON) + _end = .; + } > IRAM + + .mp3buf : + { + . = ALIGN(0x4); + _mp3buffer = .; + } > IRAM + + .mp3end ENDADDR: + { + _mp3end = .; + } > IRAM + + .plugin ENDADDR: + { + _pluginbuf = .; + } +} -- cgit v1.2.3