diff options
author | Cástor Muñoz <cmvidal@gmail.com> | 2016-02-05 02:02:02 +0100 |
---|---|---|
committer | Cástor Muñoz <cmvidal@gmail.com> | 2017-02-09 20:47:16 +0100 |
commit | 882921efb64218e9b8cc3a7d9c7308734f9b12f3 (patch) | |
tree | fca2e1b77104419156a07c6b6d80fa7af9fa3969 /firmware/target/arm/s5l8702/boot.lds | |
parent | 0d0b163dd15c35a427c8bb2bbd7b906afe9c491d (diff) | |
download | rockbox-882921efb64218e9b8cc3a7d9c7308734f9b12f3.tar.gz rockbox-882921efb64218e9b8cc3a7d9c7308734f9b12f3.zip |
ipod6g: bootloader v1bootloader_ipod6g_v1
- dual boot
- USB mode
- battery trap
Change-Id: I8586cfeb21ee63f45ab965430725225fdfc4212d
Diffstat (limited to 'firmware/target/arm/s5l8702/boot.lds')
-rw-r--r-- | firmware/target/arm/s5l8702/boot.lds | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/firmware/target/arm/s5l8702/boot.lds b/firmware/target/arm/s5l8702/boot.lds index 2885f77eda..61f23b9c22 100644 --- a/firmware/target/arm/s5l8702/boot.lds +++ b/firmware/target/arm/s5l8702/boot.lds | |||
@@ -1,5 +1,6 @@ | |||
1 | #define ASM | 1 | #define ASM |
2 | #include "config.h" | 2 | #include "config.h" |
3 | #include "cpu.h" | ||
3 | 4 | ||
4 | ENTRY(start) | 5 | ENTRY(start) |
5 | #ifdef ROCKBOX_LITTLE_ENDIAN | 6 | #ifdef ROCKBOX_LITTLE_ENDIAN |
@@ -10,13 +11,11 @@ OUTPUT_FORMAT(elf32-bigarm) | |||
10 | OUTPUT_ARCH(arm) | 11 | OUTPUT_ARCH(arm) |
11 | STARTUP(target/arm/s5l8702/crt0.o) | 12 | STARTUP(target/arm/s5l8702/crt0.o) |
12 | 13 | ||
14 | #define MAX_LOADSIZE 8M /* reserved for loading Rockbox binary */ | ||
15 | |||
13 | #ifdef IPOD_NANO2G | 16 | #ifdef IPOD_NANO2G |
14 | #define DRAMORIG 0x08000000 + ((MEMORYSIZE - 1) * 0x100000) | 17 | #define DRAMORIG 0x08000000 + ((MEMORYSIZE - 1) * 0x100000) |
15 | #define DRAMSIZE 0x00100000 | 18 | #define DRAMSIZE 0x00100000 |
16 | #else | ||
17 | #define DRAMORIG 0x08000000 | ||
18 | #define DRAMSIZE (DRAM_SIZE - TTB_SIZE) | ||
19 | #endif | ||
20 | 19 | ||
21 | #define IRAMORIG 0x22000000 | 20 | #define IRAMORIG 0x22000000 |
22 | #define IRAMSIZE 256K | 21 | #define IRAMSIZE 256K |
@@ -26,17 +25,47 @@ MEMORY | |||
26 | DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE | 25 | DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE |
27 | IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE | 26 | IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE |
28 | } | 27 | } |
29 | |||
30 | #define LOAD_AREA IRAM | 28 | #define LOAD_AREA IRAM |
29 | #define VECT_AREA IRAM | ||
30 | #define BSS_AREA DRAM | ||
31 | |||
32 | #elif defined(IPOD_6G) | ||
33 | MEMORY | ||
34 | { | ||
35 | DRAM : ORIGIN = DRAM_ORIG, LENGTH = DRAM_SIZE | ||
36 | IRAM : ORIGIN = IRAM_ORIG, LENGTH = IRAM_SIZE | ||
37 | |||
38 | /* s5l8702 maps address 0 to ROM, IRAM or DRAM */ | ||
39 | VECT_AREA : ORIGIN = 0, LENGTH = 1K | ||
40 | |||
41 | /* IRAM region where loaded IM3 body will be moved and executed, | ||
42 | preserving the loaded IM3 header (0x800 bytes) at IRAM1_ORIG */ | ||
43 | MOVE_AREA : ORIGIN = IRAM1_ORIG + 0x800, | ||
44 | LENGTH = IRAM1_SIZE - 0x800 | ||
45 | |||
46 | /* DRAM region for BSS */ | ||
47 | BSS_AREA : ORIGIN = DRAM_ORIG + MAX_LOADSIZE, | ||
48 | LENGTH = DRAM_SIZE - MAX_LOADSIZE - TTB_SIZE | ||
49 | } | ||
50 | #define LOAD_AREA MOVE_AREA | ||
51 | |||
52 | #else | ||
53 | #error No target defined! | ||
54 | #endif | ||
55 | |||
31 | 56 | ||
32 | SECTIONS | 57 | SECTIONS |
33 | { | 58 | { |
59 | _dfuloadaddr = IRAM0_ORIG ; | ||
60 | _movestart = LOADADDR(.text) ; | ||
61 | _moveend = LOADADDR(.data) + SIZEOF(.data) ; | ||
62 | |||
34 | #ifdef NEEDS_INTVECT_COPYING | 63 | #ifdef NEEDS_INTVECT_COPYING |
35 | .intvect : { | 64 | .intvect : { |
36 | _intvectstart = . ; | 65 | _intvectstart = . ; |
37 | *(.intvect) | 66 | *(.intvect) |
38 | _intvectend = _newstart ; | 67 | _intvectend = _newstart ; |
39 | } >IRAM AT> LOAD_AREA | 68 | } >VECT_AREA AT> LOAD_AREA |
40 | _intvectcopy = LOADADDR(.intvect) ; | 69 | _intvectcopy = LOADADDR(.intvect) ; |
41 | #endif | 70 | #endif |
42 | 71 | ||
@@ -61,10 +90,9 @@ SECTIONS | |||
61 | *(.idata*) | 90 | *(.idata*) |
62 | *(.data*) | 91 | *(.data*) |
63 | *(.ncdata*); | 92 | *(.ncdata*); |
64 | . = ALIGN(0x4); | 93 | . = ALIGN(0x20); /* align move size */ |
65 | _dataend = . ; | 94 | _dataend = . ; |
66 | } > IRAM AT> LOAD_AREA | 95 | } > LOAD_AREA |
67 | _datacopy = LOADADDR(.data) ; | ||
68 | 96 | ||
69 | .stack (NOLOAD) : | 97 | .stack (NOLOAD) : |
70 | { | 98 | { |
@@ -80,7 +108,7 @@ SECTIONS | |||
80 | _fiqstackbegin = .; | 108 | _fiqstackbegin = .; |
81 | . += 0x400; | 109 | . += 0x400; |
82 | _fiqstackend = .; | 110 | _fiqstackend = .; |
83 | } > IRAM | 111 | } > LOAD_AREA |
84 | 112 | ||
85 | .bss (NOLOAD) : { | 113 | .bss (NOLOAD) : { |
86 | _edata = .; | 114 | _edata = .; |
@@ -88,7 +116,7 @@ SECTIONS | |||
88 | *(.ibss*); | 116 | *(.ibss*); |
89 | *(.ncbss*); | 117 | *(.ncbss*); |
90 | *(COMMON); | 118 | *(COMMON); |
91 | . = ALIGN(0x4); | 119 | . = ALIGN(0x20); /* align bzero size */ |
92 | _end = .; | 120 | _end = .; |
93 | } > IRAM | 121 | } > BSS_AREA |
94 | } | 122 | } |