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