]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/TARGET_LPC11U37H_401/LPC11U37.ld
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_NXP / TARGET_LPC11UXX / TOOLCHAIN_GCC_CR / TARGET_LPC11U37H_401 / LPC11U37.ld
1 /* mbed - LPC11U35 linker script
2  * Based linker script generated by Code Red Technologies Red Suite 4.1
3  */
4 GROUP(libgcc.a libc_s.a libstdc++_s.a libm.a libcr_newlib_nohost.a crti.o crtn.o crtbegin.o crtend.o)
5
6 MEMORY
7 {
8   /* Define each memory region */
9   MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x20000 /* 128k */
10   RamLoc8 (rwx) : ORIGIN = 0x100000C0, LENGTH = 0x1F40 /* 8k */
11   RamIo1 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x800 /* 2k */
12   RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2k */
13 }
14   /* Define a symbol for the top of each memory region */
15   __top_MFlash32 = 0x0 + 0x10000;
16   __top_RamLoc8 = 0x10000000 + 0x1F40;
17   __top_RamIo1 = 0x20000000 + 0x800;
18   __top_RamUsb2 = 0x20004000 + 0x800;
19
20 ENTRY(ResetISR)
21
22 SECTIONS
23 {
24
25     /* MAIN TEXT SECTION */ 
26     .text : ALIGN(4)
27     {
28         FILL(0xff)
29         KEEP(*(.isr_vector))
30         *(.text.ResetISR)
31         . = 0x200;
32         
33         /* Global Section Table */
34         . = ALIGN(4) ;
35         __section_table_start = .;
36         __data_section_table = .;
37         LONG(LOADADDR(.data));
38         LONG(    ADDR(.data)) ;
39         LONG(  SIZEOF(.data));
40         LONG(LOADADDR(.data_RAM2));
41         LONG(    ADDR(.data_RAM2)) ;
42         LONG(  SIZEOF(.data_RAM2));
43         __data_section_table_end = .;
44         __bss_section_table = .;
45         LONG(    ADDR(.bss));
46         LONG(  SIZEOF(.bss));
47         LONG(    ADDR(.bss_RAM2));
48         LONG(  SIZEOF(.bss_RAM2));
49         __bss_section_table_end = .;
50         __section_table_end = . ;
51         /* End of Global Section Table */
52         
53
54         *(.after_vectors*)
55         
56         *(.text*)
57         *(.rodata .rodata.*)
58         . = ALIGN(4);
59         
60         /* C++ constructors etc */
61         . = ALIGN(4);
62         KEEP(*(.init))
63         
64         . = ALIGN(4);
65         __preinit_array_start = .;
66         KEEP (*(.preinit_array))
67         __preinit_array_end = .;
68         
69         . = ALIGN(4);
70         __init_array_start = .;
71         KEEP (*(SORT(.init_array.*)))
72         KEEP (*(.init_array))
73         __init_array_end = .;
74         
75         KEEP(*(.fini));
76         
77         . = ALIGN(0x4);
78         KEEP (*crtbegin.o(.ctors))
79         KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
80         KEEP (*(SORT(.ctors.*)))
81         KEEP (*crtend.o(.ctors))
82         
83         . = ALIGN(0x4);
84         KEEP (*crtbegin.o(.dtors))
85         KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
86         KEEP (*(SORT(.dtors.*)))
87         KEEP (*crtend.o(.dtors))
88         /* End C++ */
89     } > MFlash32
90
91     /*
92      * for exception handling/unwind - some Newlib functions (in common
93      * with C++ and STDC++) use this.
94      */
95     .ARM.extab : ALIGN(4)
96     {
97         *(.ARM.extab* .gnu.linkonce.armextab.*)
98     } > MFlash32
99     __exidx_start = .;
100     
101     .ARM.exidx : ALIGN(4)
102     {
103         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
104     } > MFlash32
105     __exidx_end = .;
106     
107     _etext = .;
108         
109     
110     .data_RAM2 : ALIGN(4)
111     {
112        FILL(0xff)
113         *(.data.$RAM2*)
114         *(.data.$RamUsb2*)
115        . = ALIGN(4) ;
116     } > RamUsb2 AT>MFlash32
117     
118     /* MAIN DATA SECTION */
119
120     .uninit_RESERVED : ALIGN(4)
121     {
122         KEEP(*(.bss.$RESERVED*))
123     } > RamLoc8
124
125     .data : ALIGN(4)
126     {
127         FILL(0xff)
128         _data = .;
129         *(vtable)
130         *(.data*)
131         . = ALIGN(4) ;
132         _edata = .;
133     } > RamLoc8 AT>MFlash32
134
135     
136     .bss_RAM2 : ALIGN(4)
137     {
138         *(.bss.$RAM2*)
139         *(.bss.$RamUsb2*)
140        . = ALIGN(4) ;
141     } > RamUsb2
142
143     /* MAIN BSS SECTION */
144     .bss : ALIGN(4)
145     {
146         _bss = .;
147         *(.bss*)
148         *(COMMON)
149         . = ALIGN(4) ;
150         _ebss = .;
151         PROVIDE(end = .);
152         __end__ = .;
153     } > RamLoc8
154     
155     PROVIDE(_pvHeapStart = .);
156     PROVIDE(_vStackTop = __top_RamLoc8 - 0);
157 }