]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC408X/TOOLCHAIN_GCC_CR/LPC407x_8x.ld
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_NXP / TARGET_LPC408X / TOOLCHAIN_GCC_CR / LPC407x_8x.ld
1 /*
2  * GENERATED FILE - DO NOT EDIT
3  * (C) Code Red Technologies Ltd, 2008-2013
4  * Generated linker script file for LPC4088
5  * Created from generic_c.ld (vLPCXpresso v5.1 (2 [Build 2065] [2013-02-20] ))
6  * By LPCXpresso v5.1.2 [Build 2065] [2013-02-20]  on Wed Apr 17 14:50:07 CEST 2013
7  */
8
9
10 GROUP(libgcc.a libc.a libstdc++.a libm.a libcr_newlib_nohost.a crti.o crtn.o crtbegin.o crtend.o)
11
12 MEMORY
13 {
14   /* Define each memory region */
15   MFlash512 (rx) : ORIGIN = 0x0, LENGTH = 0x80000 /* 512k */
16   RamLoc64 (rwx) : ORIGIN = 0x100000E8, LENGTH = 0xFF18 /* 64k */
17   RamPeriph32 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000 /* 32k */
18
19 }
20   /* Define a symbol for the top of each memory region */
21   __top_MFlash512 = 0x0 + 0x80000;
22   __top_RamLoc64 = 0x10000000 + 0x10000;
23   __top_RamPeriph32 = 0x20000000 + 0x8000;
24
25 ENTRY(ResetISR)
26
27 SECTIONS
28 {
29
30     /* MAIN TEXT SECTION */    
31     .text : ALIGN(4)
32     {
33         FILL(0xff)
34         KEEP(*(.isr_vector))
35         
36         /* Global Section Table */
37         . = ALIGN(4) ;
38         __section_table_start = .;
39         __data_section_table = .;
40         LONG(LOADADDR(.data));
41         LONG(    ADDR(.data)) ;
42         LONG(  SIZEOF(.data));
43         LONG(LOADADDR(.data_RAM2));
44         LONG(    ADDR(.data_RAM2)) ;
45         LONG(  SIZEOF(.data_RAM2));
46         __data_section_table_end = .;
47         __bss_section_table = .;
48         LONG(    ADDR(.bss));
49         LONG(  SIZEOF(.bss));
50         LONG(    ADDR(.bss_RAM2));
51         LONG(  SIZEOF(.bss_RAM2));
52         __bss_section_table_end = .;
53         __section_table_end = . ;
54         /* End of Global Section Table */
55         
56
57         *(.after_vectors*)
58         
59         *(.text*)
60         *(.rodata .rodata.*)
61         . = ALIGN(4);
62         
63         /* C++ constructors etc */
64         . = ALIGN(4);
65         KEEP(*(.init))
66         
67         . = ALIGN(4);
68         __preinit_array_start = .;
69         KEEP (*(.preinit_array))
70         __preinit_array_end = .;
71         
72         . = ALIGN(4);
73         __init_array_start = .;
74         KEEP (*(SORT(.init_array.*)))
75         KEEP (*(.init_array))
76         __init_array_end = .;
77         
78         KEEP(*(.fini));
79         
80         . = ALIGN(4);
81         KEEP (*crtbegin.o(.ctors))
82         KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
83         KEEP (*(SORT(.ctors.*)))
84         KEEP (*crtend.o(.ctors))
85         
86         . = ALIGN(4);
87         KEEP (*crtbegin.o(.dtors))
88         KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
89         KEEP (*(SORT(.dtors.*)))
90         KEEP (*crtend.o(.dtors))
91         /* End C++ */
92     } > MFlash512
93
94     /*
95      * for exception handling/unwind - some Newlib functions (in common
96      * with C++ and STDC++) use this. 
97      */
98     .ARM.extab : ALIGN(4)
99     {
100         *(.ARM.extab* .gnu.linkonce.armextab.*)
101     } > MFlash512
102     __exidx_start = .;
103     
104     .ARM.exidx : ALIGN(4)
105     {
106         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
107     } > MFlash512
108     __exidx_end = .;
109     
110     _etext = .;
111         
112     
113     /* DATA section for RamPeriph32 */
114     .data_RAM2 : ALIGN(4)
115     {
116        FILL(0xff)
117         *(.data.$RAM2*)
118         *(.data.$RamPeriph32*)
119        . = ALIGN(4) ;
120     } > RamPeriph32 AT>MFlash512
121     
122     /* MAIN DATA SECTION */
123     
124
125     .uninit_RESERVED : ALIGN(4)
126     {
127         KEEP(*(.bss.$RESERVED*))
128         . = ALIGN(4) ;
129         _end_uninit_RESERVED = .;
130     } > RamLoc64
131
132     .data : ALIGN(4)
133     {
134         FILL(0xff)
135         _data = .;
136         *(vtable)
137         *(.data*)
138         . = ALIGN(4) ;
139         _edata = .;
140     } > RamLoc64 AT>MFlash512
141
142     /* BSS section for RamPeriph32 */
143     .bss_RAM2 : ALIGN(4)
144     {
145         *(.bss.$RAM2*)
146         *(.bss.$RamPeriph32*)
147        . = ALIGN(4) ;
148     } > RamPeriph32
149
150     /* MAIN BSS SECTION */
151     .bss : ALIGN(4)
152     {
153         _bss = .;
154         *(.bss*)
155         *(COMMON)
156         . = ALIGN(4) ;
157         _ebss = .;
158         PROVIDE(end = .);
159         __end__ = .;
160     } > RamLoc64
161         
162     /* NOINIT section for RamPeriph32 */
163     .noinit_RAM2 (NOLOAD) : ALIGN(4)
164     {
165         *(.noinit.$RAM2*)
166         *(.noinit.$RamPeriph32*)
167        . = ALIGN(4) ;
168     } > RamPeriph32 
169     
170     /* DEFAULT NOINIT SECTION */
171     .noinit (NOLOAD): ALIGN(4)
172     {
173         _noinit = .;
174         *(.noinit*) 
175          . = ALIGN(4) ;
176         _end_noinit = .;
177     } > RamLoc64
178     
179     PROVIDE(_pvHeapStart = .);
180     PROVIDE(_vStackTop = __top_RamLoc64 - 0);
181 }