Make it clear that the player has to be restarted after initializing the database
[Rockbox.git] / firmware / boot.lds
bloba8c8947f95372382751420551321566e47868e62
1 #include "config.h"
3 ENTRY(start)
4 #ifdef CPU_COLDFIRE
5 OUTPUT_FORMAT(elf32-m68k)
6 INPUT(target/coldfire/crt0.o)
7 #elif defined (CPU_ARM)
8 OUTPUT_FORMAT(elf32-littlearm)
9 OUTPUT_ARCH(arm)
10 #ifdef CPU_PP
11 INPUT(target/arm/crt0-pp-bl.o)
12 #else
13 INPUT(target/arm/crt0.o)
14 #endif
15 #else
16 OUTPUT_FORMAT(elf32-sh)
17 INPUT(target/sh/crt0.o)
18 #endif
20 #define DRAMSIZE (MEMORYSIZE * 0x100000)
22 #ifdef IRIVER_H100_SERIES
23 #define DRAMORIG 0x31000000
24 #define IRAMORIG 0x10000000
25 #define IRAMSIZE 0x18000
26 #define FLASHORIG 0x001f0000
27 #define FLASHSIZE 2M
28 #elif defined(IRIVER_H300_SERIES)
29 #define DRAMORIG 0x31000000
30 #define IRAMORIG 0x10000000
31 #define IRAMSIZE 0x18000
32 #define FLASHORIG 0x003f0000
33 #define FLASHSIZE 4M
34 #elif defined(IAUDIO_X5)
35 #define DRAMORIG 0x31000000
36 #define IRAMORIG 0x10000000
37 #define IRAMSIZE 0x20000
38 #define FLASHORIG 0x00010000
39 #define FLASHSIZE 4M
40 #elif CONFIG_CPU == PP5020
41 #define DRAMORIG 0x10000000
42 #define IRAMORIG 0x40000000
43 #define IRAMSIZE 0x18000
44 #define FLASHORIG 0x001f0000
45 #define FLASHSIZE 2M
46 #elif CONFIG_CPU == PP5024
47 #define DRAMORIG 0x10000000
48 #define IRAMORIG 0x40000000
49 #define IRAMSIZE 0x18000
50 #define FLASHORIG 0x001f0000
51 #define FLASHSIZE 2M
52 #elif CONFIG_CPU == S3C2440
53 #define DRAMORIG 0x30000000
54 #define IRAMORIG 0x40000000
55 #define IRAMSIZE 4K
56 #define FLASHORIG 0x0000000
57 #define FLASHSIZE 1M
58 #elif CONFIG_CPU == PP5002
59 #define DRAMORIG 0x28000000
60 #define IRAMORIG 0x40000000
61 #define IRAMSIZE 0x18000
62 #define FLASHORIG 0x001f0000
63 #define FLASHSIZE 2M
64 #else
65 #define DRAMORIG 0x09000000
66 #define IRAMORIG 0x0f000000
67 #define IRAMSIZE 0x1000
68 #define FLASHORIG 0x02000000 + ROM_START
69 #define FLASHSIZE 256K - ROM_START
70 #endif
72 #if !defined(CPU_PP) && (CONFIG_CPU!=S3C2440)
73 MEMORY
75    DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
76    IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
77    FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
79 #endif
81 SECTIONS
82 #ifdef CPU_PP
84   . = IRAMORIG;
86   .text : { 
87     *(.init.text)
88     *(.text)
89   }
91   .data : { 
92     *(.icode)
93     *(.irodata)
94     *(.idata)
95     *(.data)
96     _dataend = . ;
97    }
99   .stack :
100   {
101      *(.stack)
102      _stackbegin = .;
103      stackbegin = .;
104      . += 0x2000;
105      _stackend = .;
106      stackend = .;
107   }
109   /* The bss section is too large for IRAM - we just move it 16MB into the
110      DRAM */
112   . = (DRAMORIG+16*1024*1024);
113   .bss : {
114      _edata = .;
115      *(.bss);
116      *(.ibss);
117      _end = .;
118    }
120 #elif (CONFIG_CPU==S3C2440)
122   . = DRAMORIG + 0x1000000;
123   .text : {
124     *(.init.text)
125     *(.text)
126   }
127   .data : {
128     *(.icode)
129     *(.irodata)
130     *(.idata)
131     *(.data)
132     _dataend = . ;
133    }
134   .stack :
135   {
136      *(.stack)
137      _stackbegin = .;
138      stackbegin = .;
139      . += 0x2000;
140      _stackend = .;
141      stackend = .;
142   }
143   .bss : {
144      _edata = .;
145      *(.bss);
146      *(.ibss);
147      _end = .;
148    }
150 #else
152     .vectors :
153     {
154 #ifdef IAUDIO_X5
155         *(.init.text)
156 #endif
157         _datacopy = .;
158     } > FLASH
160     .data : AT ( _datacopy )
161     {
162         _datastart = .;
163         *(.resetvectors);
164         *(.vectors);
165         . = ALIGN(0x200);
166         *(.icode)
167         *(.irodata)
168         *(.idata)
169         *(.data)
170         . = ALIGN(0x4);
171         _dataend = .;         
172         . = ALIGN(0x10);  /* Maintain proper alignment for .text section */
173     } > IRAM
174     
175     /* TRICK ALERT! Newer versions of the linker don't allow output sections
176        to overlap even if one of them is empty, so advance the location pointer
177        "by hand" */
178     .text LOADADDR(.data) + SIZEOF(.data) :
179     {
180         *(.init.text)
181         *(.text)
182         . = ALIGN(0x4);
183     } > FLASH
185     .rodata :
186     {
187         *(.rodata)
188         *(.rodata.str1.1)
189         *(.rodata.str1.4)
190         . = ALIGN(0x4);
191         _iramcopy = .;
192     } > FLASH
194     .stack :
195     {
196        *(.stack)
197        _stackbegin = .;
198        stackbegin = .;
199        . += 0x2000;
200        _stackend = .;
201        stackend = .;
202     } > IRAM
204 #if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) || defined(IAUDIO_X5)
205     .bss DRAMORIG+0x800000:
206 #else
207     .bss :
208 #endif
209     {
210        _edata = .;
211         *(.ibss)
212         *(.bss)
213         *(COMMON)
214        _end = .;
215 #if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) || defined(IAUDIO_X5)
216     } > DRAM
217 #else
218     } > IRAM
219 #endif
222 #endif