605e0f8074038f44da92f0e8e2c60ecddd5828d6
[processor-sdk/open-amp.git] / apps / system / generic / machine / zynqmp_r5 / linker_remote.ld
1 /*******************************************************************/
2 /*                                                                 */
3 /* This file is automatically generated by linker script generator.*/
4 /*                                                                 */
5 /* Version:                                 */
6 /*                                                                 */
7 /* Copyright (c) 2010 Xilinx, Inc.  All rights reserved.           */
8 /*                                                                 */
9 /* Description : Cortex-R5 Linker Script                          */
10 /*                                                                 */
11 /*******************************************************************/
13 _STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x2000;
14 _HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x4000;
16 _ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024;
17 _SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048;
18 _IRQ_STACK_SIZE = DEFINED(_IRQ_STACK_SIZE) ? _IRQ_STACK_SIZE : 1024;
19 _FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024;
20 _UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;
22 /* Define Memories in the system */
24 MEMORY
25 {
26    ps8_r5_tcm_ram_0_S_AXI_BASEADDR : ORIGIN = 0x00000000, LENGTH = 0x00010000
27    ps8_r5_tcm_ram_1_S_AXI_BASEADDR : ORIGIN = 0x00020000, LENGTH = 0x00020000
28 }
30 /* Specify the default entry point to the program */
32 /* ENTRY(_boot) */
34 ENTRY(_vector_table)
36 /* Define the sections, and where they are mapped in memory */
38 SECTIONS
39 {
41 .vectors : {
42    KEEP (*(.vectors))
43 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
46 _binary_firmware1_start = 0;
47 _binary_firmware1_end = 0;
48 _binary_firmware2_start = 0;
49 _binary_firmware2_end = 0;
51 .text : {
52    /* *(.vectors) */
53    *(.boot)
54    *(.text)
55    *(.text.*)
56    *(.gnu.linkonce.t.*)
57    *(.plt)
58    *(.gnu_warning)
59    *(.gcc_execpt_table)
60    *(.glue_7)
61    *(.glue_7t)
62    *(.vfp11_veneer)
63    *(.ARM.extab)
64    *(.gnu.linkonce.armextab.*)
65 } > ps8_r5_tcm_ram_1_S_AXI_BASEADDR
67 .init : {
68    KEEP (*(.init))
69 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
71 .fini : {
72    KEEP (*(.fini))
73 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
75 .interp : {
76    KEEP (*(.interp))
77 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
79 .note-ABI-tag : {
80    KEEP (*(.note-ABI-tag))
81 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
83 .rodata : {
84    __rodata_start = .;
85    *(.rodata)
86    *(.rodata.*)
87    *(.gnu.linkonce.r.*)
88    __rodata_end = .;
89 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
91 .rodata1 : {
92    __rodata1_start = .;
93    *(.rodata1)
94    *(.rodata1.*)
95    __rodata1_end = .;
96 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
98 .sdata2 : {
99    __sdata2_start = .;
100    *(.sdata2)
101    *(.sdata2.*)
102    *(.gnu.linkonce.s2.*)
103    __sdata2_end = .;
104 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
106 .sbss2 : {
107    __sbss2_start = .;
108    *(.sbss2)
109    *(.sbss2.*)
110    *(.gnu.linkonce.sb2.*)
111    __sbss2_end = .;
112 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
114 .data : {
115    __data_start = .;
116    *(.data)
117    *(.data.*)
118    *(.gnu.linkonce.d.*)
119    *(.jcr)
120    *(.got)
121    *(.got.plt)
122    __data_end = .;
123 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
125 .data1 : {
126    __data1_start = .;
127    *(.data1)
128    *(.data1.*)
129    __data1_end = .;
130 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
132 .got : {
133    *(.got)
134 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
136 .ctors : {
137    __CTOR_LIST__ = .;
138    ___CTORS_LIST___ = .;
139    KEEP (*crtbegin.o(.ctors))
140    KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
141    KEEP (*(SORT(.ctors.*)))
142    KEEP (*(.ctors))
143    __CTOR_END__ = .;
144    ___CTORS_END___ = .;
145 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
147 .dtors : {
148    __DTOR_LIST__ = .;
149    ___DTORS_LIST___ = .;
150    KEEP (*crtbegin.o(.dtors))
151    KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
152    KEEP (*(SORT(.dtors.*)))
153    KEEP (*(.dtors))
154    __DTOR_END__ = .;
155    ___DTORS_END___ = .;
156 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
158 .fixup : {
159    __fixup_start = .;
160    *(.fixup)
161    __fixup_end = .;
162 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
164 .eh_frame : {
165    *(.eh_frame)
166 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
168 .eh_framehdr : {
169    __eh_framehdr_start = .;
170    *(.eh_framehdr)
171    __eh_framehdr_end = .;
172 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
174 .gcc_except_table : {
175    *(.gcc_except_table)
176 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
178 .mmu_tbl (ALIGN(16384)) : {
179    __mmu_tbl_start = .;
180    *(.mmu_tbl)
181    __mmu_tbl_end = .;
182 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
184 .ARM.exidx : {
185    __exidx_start = .;
186    *(.ARM.exidx*)
187    *(.gnu.linkonce.armexidix.*.*)
188    __exidx_end = .;
189 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
191 .preinit_array : {
192    __preinit_array_start = .;
193    KEEP (*(SORT(.preinit_array.*)))
194    KEEP (*(.preinit_array))
195    __preinit_array_end = .;
196 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
198 .init_array : {
199    __init_array_start = .;
200    KEEP (*(SORT(.init_array.*)))
201    KEEP (*(.init_array))
202    __init_array_end = .;
203 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
205 .fini_array : {
206    __fini_array_start = .;
207    KEEP (*(SORT(.fini_array.*)))
208    KEEP (*(.fini_array))
209    __fini_array_end = .;
210 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
212 .ARM.attributes : {
213    __ARM.attributes_start = .;
214    *(.ARM.attributes)
215    __ARM.attributes_end = .;
216 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
218 .sdata : {
219    __sdata_start = .;
220    *(.sdata)
221    *(.sdata.*)
222    *(.gnu.linkonce.s.*)
223    __sdata_end = .;
224 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
226 .sbss (NOLOAD) : {
227    __sbss_start = .;
228    *(.sbss)
229    *(.sbss.*)
230    *(.gnu.linkonce.sb.*)
231    __sbss_end = .;
232 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
234 .tdata : {
235    __tdata_start = .;
236    *(.tdata)
237    *(.tdata.*)
238    *(.gnu.linkonce.td.*)
239    __tdata_end = .;
240 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
242 .tbss : {
243    __tbss_start = .;
244    *(.tbss)
245    *(.tbss.*)
246    *(.gnu.linkonce.tb.*)
247    __tbss_end = .;
248 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
250 .bss (NOLOAD) : {
251    . = ALIGN(4);
252    __bss_start__ = .;
253    *(.bss)
254    *(.bss.*)
255    *(.gnu.linkonce.b.*)
256    *(COMMON)
257    . = ALIGN(4);
258    __bss_end__ = .;
259 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
261 _SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
263 _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
265 /* Generate Stack and Heap definitions */
267 .heap (NOLOAD) : {
268    . = ALIGN(16);
269    _heap = .;
270    HeapBase = .;
271    _heap_start = .;
272    . += _HEAP_SIZE;
273    _heap_end = .;
274    HeapLimit = .;
275 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
277 .stack (NOLOAD) : {
278    . = ALIGN(16);
279    _stack_end = .;
280    . += _STACK_SIZE;
281    _stack = .;
282    __stack = _stack;
283    . = ALIGN(16);
284    _irq_stack_end = .;
285    . += _IRQ_STACK_SIZE;
286    __irq_stack = .;
287    _supervisor_stack_end = .;
288    . += _SUPERVISOR_STACK_SIZE;
289    . = ALIGN(16);
290    __supervisor_stack = .;
291    _abort_stack_end = .;
292    . += _ABORT_STACK_SIZE;
293    . = ALIGN(16);
294    __abort_stack = .;
295    _fiq_stack_end = .;
296    . += _FIQ_STACK_SIZE;
297    . = ALIGN(16);
298    __fiq_stack = .;
299    _undef_stack_end = .;
300    . += _UNDEF_STACK_SIZE;
301    . = ALIGN(16);
302    __undef_stack = .;
303 } > ps8_r5_tcm_ram_0_S_AXI_BASEADDR
305 _end = .;