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