]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5/src/lscript.ld
Update some more standard demos for use on 64-bit architectures.
[freertos] / FreeRTOS / Demo / CORTEX_R5_UltraScale_MPSoC / RTOSDemo_R5 / src / lscript.ld
1 /*******************************************************************/\r
2 /*                                                                 */\r
3 /* This file is automatically generated by linker script generator.*/\r
4 /*                                                                 */\r
5 /* Version:                                 */\r
6 /*                                                                 */\r
7 /* Copyright (c) 2010 Xilinx, Inc.  All rights reserved.           */\r
8 /*                                                                 */\r
9 /* Description : ARM-v7 Linker Script                          */\r
10 /*                                                                 */\r
11 /*******************************************************************/\r
12 \r
13 _STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x2000;\r
14 _HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x2000;\r
15 \r
16 _ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024;\r
17 _SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048;\r
18 _IRQ_STACK_SIZE = DEFINED(_IRQ_STACK_SIZE) ? _IRQ_STACK_SIZE : 1024;\r
19 _FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024;\r
20 _UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;\r
21 \r
22 /* Define Memories in the system */\r
23 \r
24 MEMORY\r
25 {\r
26    psu_bbram_0_S_AXI_BASEADDR : ORIGIN = 0xFFCD0000, LENGTH = 0x10000\r
27    psu_ocm_S_AXI_BASEADDR : ORIGIN = 0xFF960000, LENGTH = 0x10000\r
28    psu_ocm_ram_0_S_AXI_BASEADDR : ORIGIN = 0xFFFC0000, LENGTH = 0x30000\r
29    psu_ocm_ram_1_S_AXI_BASEADDR : ORIGIN = 0xFFFF0000, LENGTH = 0x10000\r
30    psu_pmu_ram_S_AXI_BASEADDR : ORIGIN = 0xFFDC0000, LENGTH = 0x20000\r
31    psu_qspi_linear_0_S_AXI_BASEADDR : ORIGIN = 0xC0000000, LENGTH = 0x20000000\r
32    psu_r5_0_atcm_S_AXI_BASEADDR : ORIGIN = 0xFFE00000, LENGTH = 0x10000\r
33    psu_r5_0_atcm_lockstep_S_AXI_BASEADDR : ORIGIN = 0xFFE10000, LENGTH = 0x10000\r
34    psu_r5_0_btcm_S_AXI_BASEADDR : ORIGIN = 0xFFE20000, LENGTH = 0x10000\r
35    psu_r5_0_btcm_lockstep_S_AXI_BASEADDR : ORIGIN = 0xFFE30000, LENGTH = 0x10000\r
36    psu_r5_1_atcm_S_AXI_BASEADDR : ORIGIN = 0xFFE90000, LENGTH = 0x10000\r
37    psu_r5_1_btcm_S_AXI_BASEADDR : ORIGIN = 0xFFEB0000, LENGTH = 0x10000\r
38    psu_r5_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x100000, LENGTH = 0x7FF00000\r
39    psu_r5_tcm_ram_0_S_AXI_BASEADDR : ORIGIN = 0x100, LENGTH = 0x1FF01\r
40 }\r
41 \r
42 /* Specify the default entry point to the program */\r
43 \r
44 ENTRY(_boot)\r
45 \r
46 /* Define the sections, and where they are mapped in memory */\r
47 \r
48 SECTIONS\r
49 {\r
50 .vectors 0x0 : {\r
51    KEEP (*(.freertos_vectors))\r
52    KEEP (*(.vectors))\r
53 }\r
54 \r
55 .text : {\r
56    *(.boot)\r
57    *(.text)\r
58    *(.text.*)\r
59    *(.gnu.linkonce.t.*)\r
60    *(.plt)\r
61    *(.gnu_warning)\r
62    *(.gcc_execpt_table)\r
63    *(.glue_7)\r
64    *(.glue_7t)\r
65    *(.vfp11_veneer)\r
66    *(.ARM.extab)\r
67    *(.gnu.linkonce.armextab.*)\r
68 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
69 \r
70 .init : {\r
71    KEEP (*(.init))\r
72 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
73 \r
74 .fini : {\r
75    KEEP (*(.fini))\r
76 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
77 \r
78 .interp : {\r
79    KEEP (*(.interp))\r
80 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
81 \r
82 .note-ABI-tag : {\r
83    KEEP (*(.note-ABI-tag))\r
84 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
85 \r
86 .rodata : {\r
87    __rodata_start = .;\r
88    *(.rodata)\r
89    *(.rodata.*)\r
90    *(.gnu.linkonce.r.*)\r
91    __rodata_end = .;\r
92 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
93 \r
94 .rodata1 : {\r
95    __rodata1_start = .;\r
96    *(.rodata1)\r
97    *(.rodata1.*)\r
98    __rodata1_end = .;\r
99 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
100 \r
101 .sdata2 : {\r
102    __sdata2_start = .;\r
103    *(.sdata2)\r
104    *(.sdata2.*)\r
105    *(.gnu.linkonce.s2.*)\r
106    __sdata2_end = .;\r
107 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
108 \r
109 .sbss2 : {\r
110    __sbss2_start = .;\r
111    *(.sbss2)\r
112    *(.sbss2.*)\r
113    *(.gnu.linkonce.sb2.*)\r
114    __sbss2_end = .;\r
115 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
116 \r
117 .data : {\r
118    __data_start = .;\r
119    *(.data)\r
120    *(.data.*)\r
121    *(.gnu.linkonce.d.*)\r
122    *(.jcr)\r
123    *(.got)\r
124    *(.got.plt)\r
125    __data_end = .;\r
126 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
127 \r
128 .data1 : {\r
129    __data1_start = .;\r
130    *(.data1)\r
131    *(.data1.*)\r
132    __data1_end = .;\r
133 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
134 \r
135 .got : {\r
136    *(.got)\r
137 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
138 \r
139 .ctors : {\r
140    __CTOR_LIST__ = .;\r
141    ___CTORS_LIST___ = .;\r
142    KEEP (*crtbegin.o(.ctors))\r
143    KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))\r
144    KEEP (*(SORT(.ctors.*)))\r
145    KEEP (*(.ctors))\r
146    __CTOR_END__ = .;\r
147    ___CTORS_END___ = .;\r
148 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
149 \r
150 .dtors : {\r
151    __DTOR_LIST__ = .;\r
152    ___DTORS_LIST___ = .;\r
153    KEEP (*crtbegin.o(.dtors))\r
154    KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))\r
155    KEEP (*(SORT(.dtors.*)))\r
156    KEEP (*(.dtors))\r
157    __DTOR_END__ = .;\r
158    ___DTORS_END___ = .;\r
159 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
160 \r
161 .fixup : {\r
162    __fixup_start = .;\r
163    *(.fixup)\r
164    __fixup_end = .;\r
165 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
166 \r
167 .eh_frame : {\r
168    *(.eh_frame)\r
169 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
170 \r
171 .eh_framehdr : {\r
172    __eh_framehdr_start = .;\r
173    *(.eh_framehdr)\r
174    __eh_framehdr_end = .;\r
175 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
176 \r
177 .gcc_except_table : {\r
178    *(.gcc_except_table)\r
179 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
180 \r
181 .mmu_tbl (ALIGN(16384)) : {\r
182    __mmu_tbl_start = .;\r
183    *(.mmu_tbl)\r
184    __mmu_tbl_end = .;\r
185 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
186 \r
187 .ARM.exidx : {\r
188    __exidx_start = .;\r
189    *(.ARM.exidx*)\r
190    *(.gnu.linkonce.armexidix.*.*)\r
191    __exidx_end = .;\r
192 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
193 \r
194 .preinit_array : {\r
195    __preinit_array_start = .;\r
196    KEEP (*(SORT(.preinit_array.*)))\r
197    KEEP (*(.preinit_array))\r
198    __preinit_array_end = .;\r
199 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
200 \r
201 .init_array : {\r
202    __init_array_start = .;\r
203    KEEP (*(SORT(.init_array.*)))\r
204    KEEP (*(.init_array))\r
205    __init_array_end = .;\r
206 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
207 \r
208 .fini_array : {\r
209    __fini_array_start = .;\r
210    KEEP (*(SORT(.fini_array.*)))\r
211    KEEP (*(.fini_array))\r
212    __fini_array_end = .;\r
213 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
214 \r
215 .ARM.attributes : {\r
216    __ARM.attributes_start = .;\r
217    *(.ARM.attributes)\r
218    __ARM.attributes_end = .;\r
219 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
220 \r
221 .sdata : {\r
222    __sdata_start = .;\r
223    *(.sdata)\r
224    *(.sdata.*)\r
225    *(.gnu.linkonce.s.*)\r
226    __sdata_end = .;\r
227 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
228 \r
229 .sbss (NOLOAD) : {\r
230    __sbss_start = .;\r
231    *(.sbss)\r
232    *(.sbss.*)\r
233    *(.gnu.linkonce.sb.*)\r
234    __sbss_end = .;\r
235 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
236 \r
237 .tdata : {\r
238    __tdata_start = .;\r
239    *(.tdata)\r
240    *(.tdata.*)\r
241    *(.gnu.linkonce.td.*)\r
242    __tdata_end = .;\r
243 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
244 \r
245 .tbss : {\r
246    __tbss_start = .;\r
247    *(.tbss)\r
248    *(.tbss.*)\r
249    *(.gnu.linkonce.tb.*)\r
250    __tbss_end = .;\r
251 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
252 \r
253 .bss (NOLOAD) : {\r
254    . = ALIGN(4);\r
255    __bss_start__ = .;\r
256    *(.bss)\r
257    *(.bss.*)\r
258    *(.gnu.linkonce.b.*)\r
259    *(COMMON)\r
260    . = ALIGN(4);\r
261    __bss_end__ = .;\r
262 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
263 \r
264 _SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );\r
265 \r
266 _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );\r
267 \r
268 /* Generate Stack and Heap definitions */\r
269 \r
270 .heap (NOLOAD) : {\r
271    . = ALIGN(16);\r
272    _heap = .;\r
273    HeapBase = .;\r
274    _heap_start = .;\r
275    . += _HEAP_SIZE;\r
276    _heap_end = .;\r
277    HeapLimit = .;\r
278 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
279 \r
280 .stack (NOLOAD) : {\r
281    . = ALIGN(16);\r
282    _stack_end = .;\r
283    . += _STACK_SIZE;\r
284    _stack = .;\r
285    __stack = _stack;\r
286    . = ALIGN(16);\r
287    _irq_stack_end = .;\r
288    . += _IRQ_STACK_SIZE;\r
289    __irq_stack = .;\r
290    _supervisor_stack_end = .;\r
291    . += _SUPERVISOR_STACK_SIZE;\r
292    . = ALIGN(16);\r
293    __supervisor_stack = .;\r
294    _abort_stack_end = .;\r
295    . += _ABORT_STACK_SIZE;\r
296    . = ALIGN(16);\r
297    __abort_stack = .;\r
298    _fiq_stack_end = .;\r
299    . += _FIQ_STACK_SIZE;\r
300    . = ALIGN(16);\r
301    __fiq_stack = .;\r
302    _undef_stack_end = .;\r
303    . += _UNDEF_STACK_SIZE;\r
304    . = ALIGN(16);\r
305    __undef_stack = .;\r
306 } > psu_r5_ddr_0_S_AXI_BASEADDR\r
307 \r
308 _end = .;\r
309 }\r
310 \r