diff options
-rw-r--r-- | firmware/rom.lds | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/firmware/rom.lds b/firmware/rom.lds index aee179b9e7..4da1e24c60 100644 --- a/firmware/rom.lds +++ b/firmware/rom.lds | |||
@@ -1,17 +1,30 @@ | |||
1 | #include "config.h" | 1 | #include "config.h" |
2 | 2 | ||
3 | ENTRY(start) | 3 | ENTRY(start) |
4 | #if CONFIG_CPU == MCF5249 | ||
5 | OUTPUT_FORMAT(elf32-m68k) | ||
6 | #else | ||
4 | OUTPUT_FORMAT(elf32-sh) | 7 | OUTPUT_FORMAT(elf32-sh) |
8 | #endif | ||
5 | INPUT(crt0.o) | 9 | INPUT(crt0.o) |
6 | 10 | ||
7 | #define PLUGINSIZE 0x8000 | 11 | #define PLUGINSIZE 0x8000 |
8 | 12 | ||
9 | #define DRAMORIG 0x09000000 | ||
10 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE | 13 | #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE |
14 | |||
15 | #ifdef IRIVER_H100 | ||
16 | #define DRAMORIG 0x30000000 | ||
17 | #define IRAMORIG 0x10000000 | ||
18 | #define IRAMSIZE 0x18000 | ||
19 | #define FLASHORIG 0x001f0000 | ||
20 | #define FLASHSIZE 2M | ||
21 | #else | ||
22 | #define DRAMORIG 0x09000000 | ||
11 | #define IRAMORIG 0x0f000000 | 23 | #define IRAMORIG 0x0f000000 |
12 | #define IRAMSIZE 0x1000 | 24 | #define IRAMSIZE 0x1000 |
13 | #define FLASHORIG 0x02000000 + ROM_START | 25 | #define FLASHORIG 0x02000000 + ROM_START |
14 | #define FLASHSIZE 256K - ROM_START | 26 | #define FLASHSIZE 256K - ROM_START |
27 | #endif | ||
15 | 28 | ||
16 | #define ENDADDR (DRAMORIG + DRAMSIZE) | 29 | #define ENDADDR (DRAMORIG + DRAMSIZE) |
17 | 30 | ||
@@ -33,7 +46,7 @@ SECTIONS | |||
33 | _datastart = .; | 46 | _datastart = .; |
34 | *(.resetvectors); | 47 | *(.resetvectors); |
35 | *(.vectors); | 48 | *(.vectors); |
36 | . = _datastart + 0x200; | 49 | . = ALIGN(0x200); |
37 | *(.data) | 50 | *(.data) |
38 | . = ALIGN(0x4); | 51 | . = ALIGN(0x4); |
39 | _dataend = .; | 52 | _dataend = .; |
@@ -53,12 +66,13 @@ SECTIONS | |||
53 | .rodata : | 66 | .rodata : |
54 | { | 67 | { |
55 | *(.rodata) | 68 | *(.rodata) |
69 | *(.rodata.str1.1) | ||
56 | *(.rodata.str1.4) | 70 | *(.rodata.str1.4) |
57 | . = ALIGN(0x4); | 71 | . = ALIGN(0x4); |
58 | _iramcopy = .; | 72 | _iramcopy = .; |
59 | } > FLASH | 73 | } > FLASH |
60 | 74 | ||
61 | .iram 0xf000000 : AT ( _iramcopy ) | 75 | .iram IRAMORIG : AT ( _iramcopy ) |
62 | { | 76 | { |
63 | _iramstart = .; | 77 | _iramstart = .; |
64 | *(.icode) | 78 | *(.icode) |
@@ -70,8 +84,10 @@ SECTIONS | |||
70 | { | 84 | { |
71 | *(.stack) | 85 | *(.stack) |
72 | _stackbegin = .; | 86 | _stackbegin = .; |
87 | stackbegin = .; | ||
73 | . += 0x2000; | 88 | . += 0x2000; |
74 | _stackend = .; | 89 | _stackend = .; |
90 | stackend = .; | ||
75 | } > DRAM | 91 | } > DRAM |
76 | 92 | ||
77 | .bss : | 93 | .bss : |