Of course there's no mdelay on c200(v1), so just use udelay
[kugel-rb.git] / firmware / target / arm / s5l8700 / boot.lds
blob4fe59b79edfbe959ac1e81b525892f0afdaed151
1 #include "config.h"
3 ENTRY(start)
4 #ifdef ROCKBOX_LITTLE_ENDIAN
5 OUTPUT_FORMAT(elf32-littlearm)
6 #else
7 OUTPUT_FORMAT(elf32-bigarm)
8 #endif
9 OUTPUT_ARCH(arm)
10 STARTUP(target/arm/s5l8700/crt0.o)
12 #define DRAMORIG 0x08000000
13 #define DRAMSIZE (MEMORYSIZE * 0x100000)
15 #define IRAMORIG 0x22000000
16 #if CONFIG_CPU==S5L8701
17 #define IRAMSIZE 176K
18 #else
19 #define IRAMSIZE 256K
20 #endif
22 #ifdef MEIZU_M6SL
23 #define DFULOADADDR IRAMORIG
24 #else
25 #define DFULOADADDR (IRAMORIG+0x20000)
26 #endif
28 /* This is not available in all versions of the S5L8700 */
29 #define FLASHORIG 0x24000000
30 #define FLASHSIZE 1M
32 MEMORY
34     DRAM  : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
35     IRAM  : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
36     FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
39 #if defined(IPOD_NANO2G) || defined(MEIZU_M6SL)
40 #define LOAD_AREA IRAM
41 #else
42 #define LOAD_AREA FLASH
43 #endif
45 SECTIONS
47   .intvect : {
48     _intvectstart = . ;
49     *(.intvect)
50     _intvectend = _newstart ;  
51   } >IRAM AT> LOAD_AREA
52   _intvectcopy = LOADADDR(.intvect) ;
54   .text : {
55     *(.init.text)
56     *(.text*)
57     *(.glue_7*)
58   } > LOAD_AREA
60   .rodata : {
61     *(.rodata*)
62     . = ALIGN(0x4);
63   } > LOAD_AREA
65   .data : {
66     _datastart = . ;
67     *(.irodata)
68     *(.icode)
69     *(.idata)
70     *(.data*)
71     *(.ncdata*);
72     . = ALIGN(0x4);
73     _dataend = . ;
74    } > IRAM AT> LOAD_AREA
75    _datacopy = LOADADDR(.data) ;
77   .stack (NOLOAD) :
78   {
79      *(.stack)
80      _stackbegin = .;
81      stackbegin = .;
82      . += 0x2000;
83      _stackend = .;
84      stackend = .;
85      _irqstackbegin = .;
86      . += 0x400;
87      _irqstackend = .;
88      _fiqstackbegin = .;
89      . += 0x400;
90      _fiqstackend = .;
91   } > IRAM
93   . = DRAMORIG;
94 #ifdef IPOD_NANO2G
95   /* The bss section is too large for IRAM - we just move it 12MB into the
96      DRAM */
97   . += (12*1024*1024);
98 #endif
99   .bss (NOLOAD) : {
100      _edata = .;
101      *(.bss*);
102      *(.ibss);
103      *(.ncbss*);
104      *(COMMON);
105     . = ALIGN(0x4);
106      _end = .;
107   } > DRAM