diff options
Diffstat (limited to 'firmware/target/arm/s5l8700/boot.lds')
-rw-r--r-- | firmware/target/arm/s5l8700/boot.lds | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/firmware/target/arm/s5l8700/boot.lds b/firmware/target/arm/s5l8700/boot.lds index 8ce942c9b2..2d2a686f9d 100644 --- a/firmware/target/arm/s5l8700/boot.lds +++ b/firmware/target/arm/s5l8700/boot.lds | |||
@@ -1,12 +1,12 @@ | |||
1 | #include "config.h" | 1 | #include "config.h" |
2 | 2 | ||
3 | ENTRY(start) | 3 | ENTRY(_start) |
4 | OUTPUT_FORMAT(elf32-bigarm) | 4 | OUTPUT_FORMAT(elf32-bigarm) |
5 | OUTPUT_ARCH(arm) | 5 | OUTPUT_ARCH(arm) |
6 | STARTUP(target/arm/crt0.o) | 6 | STARTUP(target/arm/s5l8700/crt0.o) |
7 | 7 | ||
8 | /* DRAMORIG is in fact 0x8000000 but remapped to 0x0 */ | 8 | /* DRAMORIG is in fact 0x8000000 but remapped to 0x0 */ |
9 | #define DRAMORIG 0x0 | 9 | #define DRAMORIG 0x8000000 |
10 | #define DRAMSIZE 16M | 10 | #define DRAMSIZE 16M |
11 | 11 | ||
12 | #define IRAMORIG 0x22000000 | 12 | #define IRAMORIG 0x22000000 |
@@ -22,41 +22,67 @@ STARTUP(target/arm/crt0.o) | |||
22 | #define FLASHORIG 0x24000000 | 22 | #define FLASHORIG 0x24000000 |
23 | #define FLASHSIZE 1M | 23 | #define FLASHSIZE 1M |
24 | 24 | ||
25 | MEMORY | ||
26 | { | ||
27 | DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE | ||
28 | IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE | ||
29 | FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE | ||
30 | } | ||
31 | |||
32 | |||
25 | SECTIONS | 33 | SECTIONS |
26 | { | 34 | { |
27 | /*. = IRAMORIG; */ | 35 | .intvect : { |
28 | /* As long as we don't flash the code, use the DFU load address */ | 36 | _intvectstart = . ; |
29 | . = DFULOADADDR; | 37 | *(.intvect) |
38 | _intvectend = _newstart ; | ||
39 | } >IRAM AT> FLASH | ||
40 | _intvectcopy = LOADADDR(.intvect) ; | ||
30 | 41 | ||
31 | .text : { | 42 | .text : { |
32 | *(.init.text) | 43 | *(.init.text) |
33 | *(.text*) | 44 | *(.text*) |
34 | } | 45 | *(.glue_7*) |
46 | } > FLASH | ||
47 | |||
48 | .rodata : { | ||
49 | *(.rodata*) | ||
50 | . = ALIGN(0x4); | ||
51 | } > FLASH | ||
35 | 52 | ||
36 | .data : { | 53 | .data : { |
37 | *(.icode) | 54 | _datastart = . ; |
38 | *(.irodata) | 55 | *(.irodata) |
56 | *(.icode) | ||
39 | *(.idata) | 57 | *(.idata) |
40 | *(.data*) | 58 | *(.data*) |
41 | *(.ncdata*); | 59 | *(.ncdata*); |
60 | . = ALIGN(0x4); | ||
42 | _dataend = . ; | 61 | _dataend = . ; |
43 | } | 62 | } > IRAM AT> FLASH |
63 | _datacopy = LOADADDR(.data) ; | ||
44 | 64 | ||
45 | .stack : | 65 | .stack : |
46 | { | 66 | { |
47 | *(.stack) | 67 | *(.stack) |
48 | _stackbegin = .; | 68 | _stackbegin = .; |
49 | stackbegin = .; | 69 | . += 0x2000; |
50 | . += 0x1000; | ||
51 | _stackend = .; | 70 | _stackend = .; |
52 | stackend = .; | 71 | _irqstackbegin = .; |
53 | } | 72 | . += 0x400; |
73 | _irqstackend = .; | ||
74 | _fiqstackbegin = .; | ||
75 | . += 0x400; | ||
76 | _fiqstackend = .; | ||
77 | } > IRAM | ||
54 | 78 | ||
55 | .bss : { | 79 | .bss : { |
56 | _edata = .; | 80 | _edata = .; |
57 | *(.bss*); | 81 | *(.bss*); |
58 | *(.ibss); | 82 | *(.ibss); |
59 | *(.ncbss*); | 83 | *(.ncbss*); |
84 | *(COMMON); | ||
85 | . = ALIGN(0x4); | ||
60 | _end = .; | 86 | _end = .; |
61 | } | 87 | } > IRAM |
62 | } | 88 | } |