]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A53_64-bit_UltraScale_MPSoC/RTOSDemo_A53/src/lscript.ld
Update the Xilinx UltraScale+ demo project to use the BSP and hardware platform gener...
[freertos] / FreeRTOS / Demo / CORTEX_A53_64-bit_UltraScale_MPSoC / RTOSDemo_A53 / 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 : Cortex-A53 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 _EL0_STACK_SIZE = DEFINED(_EL0_STACK_SIZE) ? _EL0_STACK_SIZE : 1024;\r
17 _EL1_STACK_SIZE = DEFINED(_EL1_STACK_SIZE) ? _EL1_STACK_SIZE : 2048;\r
18 _EL2_STACK_SIZE = DEFINED(_EL2_STACK_SIZE) ? _EL2_STACK_SIZE : 1024;\r
19 \r
20 /* Define Memories in the system */\r
21 \r
22 MEMORY\r
23 {\r
24    psu_bbram_0_S_AXI_BASEADDR : ORIGIN = 0xFFCD0000, LENGTH = 0x10000\r
25    psu_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x0, LENGTH = 0x80000000\r
26    psu_ocm_ram_0_S_AXI_BASEADDR : ORIGIN = 0xFFFC0000, LENGTH = 0x30000\r
27    psu_ocm_ram_1_S_AXI_BASEADDR : ORIGIN = 0xFFFF0000, LENGTH = 0x10000\r
28    psu_ocm_xmpu_cfg_S_AXI_BASEADDR : ORIGIN = 0xFFA70000, LENGTH = 0x10000\r
29    psu_pmu_ram_S_AXI_BASEADDR : ORIGIN = 0xFFDC0000, LENGTH = 0x20000\r
30    psu_qspi_linear_0_S_AXI_BASEADDR : ORIGIN = 0xC0000000, LENGTH = 0x20000000\r
31 }\r
32 \r
33 /* Specify the default entry point to the program */\r
34 \r
35 ENTRY(_vector_table)\r
36 \r
37 /* Define the sections, and where they are mapped in memory */\r
38 \r
39 SECTIONS\r
40 {\r
41 .text : {\r
42    KEEP (*(.vectors))\r
43    *(.boot)\r
44    *(.text)\r
45    *(.text.*)\r
46    *(.gnu.linkonce.t.*)\r
47    *(.plt)\r
48    *(.gnu_warning)\r
49    *(.gcc_execpt_table)\r
50    *(.glue_7)\r
51    *(.glue_7t)\r
52    *(.ARM.extab)\r
53    *(.gnu.linkonce.armextab.*)\r
54 } > psu_ddr_0_S_AXI_BASEADDR\r
55 \r
56 .init (ALIGN(64)) : {\r
57    KEEP (*(.init))\r
58 } > psu_ddr_0_S_AXI_BASEADDR\r
59 \r
60 .fini (ALIGN(64)) : {\r
61    KEEP (*(.fini))\r
62 } > psu_ddr_0_S_AXI_BASEADDR\r
63 \r
64 .interp : {\r
65    KEEP (*(.interp))\r
66 } > psu_ddr_0_S_AXI_BASEADDR\r
67 \r
68 .note-ABI-tag : {\r
69    KEEP (*(.note-ABI-tag))\r
70 } > psu_ddr_0_S_AXI_BASEADDR\r
71 \r
72 .rodata : {\r
73    . = ALIGN(64);\r
74    __rodata_start = .;\r
75    *(.rodata)\r
76    *(.rodata.*)\r
77    *(.gnu.linkonce.r.*)\r
78    __rodata_end = .;\r
79 } > psu_ddr_0_S_AXI_BASEADDR\r
80 \r
81 .rodata1 : {\r
82    . = ALIGN(64);\r
83    __rodata1_start = .;\r
84    *(.rodata1)\r
85    *(.rodata1.*)\r
86    __rodata1_end = .;\r
87 } > psu_ddr_0_S_AXI_BASEADDR\r
88 \r
89 .sdata2 : {\r
90    . = ALIGN(64);\r
91    __sdata2_start = .;\r
92    *(.sdata2)\r
93    *(.sdata2.*)\r
94    *(.gnu.linkonce.s2.*)\r
95    __sdata2_end = .;\r
96 } > psu_ddr_0_S_AXI_BASEADDR\r
97 \r
98 .sbss2 : {\r
99    . = ALIGN(64);\r
100    __sbss2_start = .;\r
101    *(.sbss2)\r
102    *(.sbss2.*)\r
103    *(.gnu.linkonce.sb2.*)\r
104    __sbss2_end = .;\r
105 } > psu_ddr_0_S_AXI_BASEADDR\r
106 \r
107 .data : {\r
108    . = ALIGN(64);\r
109    __data_start = .;\r
110    *(.data)\r
111    *(.data.*)\r
112    *(.gnu.linkonce.d.*)\r
113    *(.jcr)\r
114    *(.got)\r
115    *(.got.plt)\r
116    __data_end = .;\r
117 } > psu_ddr_0_S_AXI_BASEADDR\r
118 \r
119 .data1 : {\r
120    . = ALIGN(64);\r
121    __data1_start = .;\r
122    *(.data1)\r
123    *(.data1.*)\r
124    __data1_end = .;\r
125 } > psu_ddr_0_S_AXI_BASEADDR\r
126 \r
127 .got : {\r
128    *(.got)\r
129 } > psu_ddr_0_S_AXI_BASEADDR\r
130 \r
131 .got1 : {\r
132    *(.got1)\r
133 } > psu_ddr_0_S_AXI_BASEADDR\r
134 \r
135 .got2 : {\r
136    *(.got2)\r
137 } > psu_ddr_0_S_AXI_BASEADDR\r
138 \r
139 .ctors : {\r
140    . = ALIGN(64);\r
141    __CTOR_LIST__ = .;\r
142    ___CTORS_LIST___ = .;\r
143    KEEP (*crtbegin.o(.ctors))\r
144    KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))\r
145    KEEP (*(SORT(.ctors.*)))\r
146    KEEP (*(.ctors))\r
147    __CTOR_END__ = .;\r
148    ___CTORS_END___ = .;\r
149 } > psu_ddr_0_S_AXI_BASEADDR\r
150 \r
151 .dtors : {\r
152    . = ALIGN(64);\r
153    __DTOR_LIST__ = .;\r
154    ___DTORS_LIST___ = .;\r
155    KEEP (*crtbegin.o(.dtors))\r
156    KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))\r
157    KEEP (*(SORT(.dtors.*)))\r
158    KEEP (*(.dtors))\r
159    __DTOR_END__ = .;\r
160    ___DTORS_END___ = .;\r
161 } > psu_ddr_0_S_AXI_BASEADDR\r
162 \r
163 .fixup : {\r
164    __fixup_start = .;\r
165    *(.fixup)\r
166    __fixup_end = .;\r
167 } > psu_ddr_0_S_AXI_BASEADDR\r
168 \r
169 .eh_frame : {\r
170    *(.eh_frame)\r
171 } > psu_ddr_0_S_AXI_BASEADDR\r
172 \r
173 .eh_framehdr : {\r
174    __eh_framehdr_start = .;\r
175    *(.eh_framehdr)\r
176    __eh_framehdr_end = .;\r
177 } > psu_ddr_0_S_AXI_BASEADDR\r
178 \r
179 .gcc_except_table : {\r
180    *(.gcc_except_table)\r
181 } > psu_ddr_0_S_AXI_BASEADDR\r
182 \r
183 .mmu_tbl0 (ALIGN(4096)) : {\r
184    __mmu_tbl0_start = .;\r
185    *(.mmu_tbl0)\r
186    __mmu_tbl0_end = .;\r
187 } > psu_ddr_0_S_AXI_BASEADDR\r
188 \r
189 .mmu_tbl1 (ALIGN(4096)) : {\r
190    __mmu_tbl1_start = .;\r
191    *(.mmu_tbl1)\r
192    __mmu_tbl1_end = .;\r
193 } > psu_ddr_0_S_AXI_BASEADDR\r
194 \r
195 .mmu_tbl2 (ALIGN(4096)) : {\r
196    __mmu_tbl2_start = .;\r
197    *(.mmu_tbl2)\r
198    __mmu_tbl2_end = .;\r
199 } > psu_ddr_0_S_AXI_BASEADDR\r
200 \r
201 .ARM.exidx : {\r
202    __exidx_start = .;\r
203    *(.ARM.exidx*)\r
204    *(.gnu.linkonce.armexidix.*.*)\r
205    __exidx_end = .;\r
206 } > psu_ddr_0_S_AXI_BASEADDR\r
207 \r
208 .preinit_array : {\r
209    . = ALIGN(64);\r
210    __preinit_array_start = .;\r
211    KEEP (*(SORT(.preinit_array.*)))\r
212    KEEP (*(.preinit_array))\r
213    __preinit_array_end = .;\r
214 } > psu_ddr_0_S_AXI_BASEADDR\r
215 \r
216 .init_array : {\r
217    . = ALIGN(64);\r
218    __init_array_start = .;\r
219    KEEP (*(SORT(.init_array.*)))\r
220    KEEP (*(.init_array))\r
221    __init_array_end = .;\r
222 } > psu_ddr_0_S_AXI_BASEADDR\r
223 \r
224 .fini_array : {\r
225    . = ALIGN(64);\r
226    __fini_array_start = .;\r
227    KEEP (*(SORT(.fini_array.*)))\r
228    KEEP (*(.fini_array))\r
229    __fini_array_end = .;\r
230 } > psu_ddr_0_S_AXI_BASEADDR\r
231 \r
232 .ARM.attributes : {\r
233    __ARM.attributes_start = .;\r
234    *(.ARM.attributes)\r
235    __ARM.attributes_end = .;\r
236 } > psu_ddr_0_S_AXI_BASEADDR\r
237 \r
238 .sdata : {\r
239    . = ALIGN(64);\r
240    __sdata_start = .;\r
241    *(.sdata)\r
242    *(.sdata.*)\r
243    *(.gnu.linkonce.s.*)\r
244    __sdata_end = .;\r
245 } > psu_ddr_0_S_AXI_BASEADDR\r
246 \r
247 .sbss (NOLOAD) : {\r
248    . = ALIGN(64);\r
249    __sbss_start = .;\r
250    *(.sbss)\r
251    *(.sbss.*)\r
252    *(.gnu.linkonce.sb.*)\r
253    . = ALIGN(64);\r
254    __sbss_end = .;\r
255 } > psu_ddr_0_S_AXI_BASEADDR\r
256 \r
257 .tdata : {\r
258    . = ALIGN(64);\r
259    __tdata_start = .;\r
260    *(.tdata)\r
261    *(.tdata.*)\r
262    *(.gnu.linkonce.td.*)\r
263    __tdata_end = .;\r
264 } > psu_ddr_0_S_AXI_BASEADDR\r
265 \r
266 .tbss : {\r
267    . = ALIGN(64);\r
268    __tbss_start = .;\r
269    *(.tbss)\r
270    *(.tbss.*)\r
271    *(.gnu.linkonce.tb.*)\r
272    __tbss_end = .;\r
273 } > psu_ddr_0_S_AXI_BASEADDR\r
274 \r
275 .bss (NOLOAD) : {\r
276    . = ALIGN(64);\r
277    __bss_start__ = .;\r
278    *(.bss)\r
279    *(.bss.*)\r
280    *(.gnu.linkonce.b.*)\r
281    *(COMMON)\r
282    . = ALIGN(64);\r
283    __bss_end__ = .;\r
284 } > psu_ddr_0_S_AXI_BASEADDR\r
285 \r
286 _SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );\r
287 \r
288 _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );\r
289 \r
290 /* Generate Stack and Heap definitions */\r
291 \r
292 .heap (NOLOAD) : {\r
293    . = ALIGN(64);\r
294    _heap = .;\r
295    HeapBase = .;\r
296    _heap_start = .;\r
297    . += _HEAP_SIZE;\r
298    _heap_end = .;\r
299    HeapLimit = .;\r
300 } > psu_ddr_0_S_AXI_BASEADDR\r
301 \r
302 .stack (NOLOAD) : {\r
303    . = ALIGN(64);\r
304    _el3_stack_end = .;\r
305    . += _STACK_SIZE;\r
306    __el3_stack = .;\r
307    _el2_stack_end = .;\r
308    . += _EL2_STACK_SIZE;\r
309    . = ALIGN(64);\r
310    __el2_stack = .;\r
311    _el1_stack_end = .;\r
312    . += _EL1_STACK_SIZE;\r
313    . = ALIGN(64);\r
314    __el1_stack = .;\r
315    _el0_stack_end = .;\r
316    . += _EL0_STACK_SIZE;\r
317    . = ALIGN(64);\r
318    __el0_stack = .;\r
319 } > psu_ddr_0_S_AXI_BASEADDR\r
320 \r
321 _end = .;\r
322 }\r
323 \r