summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8702/boot.lds
diff options
context:
space:
mode:
authorCástor Muñoz <cmvidal@gmail.com>2016-02-05 02:02:02 +0100
committerCástor Muñoz <cmvidal@gmail.com>2017-02-09 20:47:16 +0100
commit882921efb64218e9b8cc3a7d9c7308734f9b12f3 (patch)
treefca2e1b77104419156a07c6b6d80fa7af9fa3969 /firmware/target/arm/s5l8702/boot.lds
parent0d0b163dd15c35a427c8bb2bbd7b906afe9c491d (diff)
downloadrockbox-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.lds54
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
4ENTRY(start) 5ENTRY(start)
5#ifdef ROCKBOX_LITTLE_ENDIAN 6#ifdef ROCKBOX_LITTLE_ENDIAN
@@ -10,13 +11,11 @@ OUTPUT_FORMAT(elf32-bigarm)
10OUTPUT_ARCH(arm) 11OUTPUT_ARCH(arm)
11STARTUP(target/arm/s5l8702/crt0.o) 12STARTUP(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)
33MEMORY
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
32SECTIONS 57SECTIONS
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}