1/* This linker script generated from xt-genldscripts.tpp for LSP C:\nxp\devices\MIMX8UD3\xtensa\gdbio */
2/* Linker Script for ld -N */
3MEMORY
4{
5  iram0_0_seg :                       	org = 0x00000000, len = 0x400
6  iram1_0_seg :                       	org = 0x00008400, len = 0x17C
7  iram1_1_seg :                       	org = 0x0000857C, len = 0x20
8  iram1_2_seg :                       	org = 0x0000859C, len = 0x20
9  iram1_3_seg :                       	org = 0x000085BC, len = 0x20
10  iram1_4_seg :                       	org = 0x000085DC, len = 0x20
11  iram1_5_seg :                       	org = 0x000085FC, len = 0x20
12  iram1_6_seg :                       	org = 0x0000861C, len = 0x20
13  iram1_7_seg :                       	org = 0x0000863C, len = 0x400
14  iram1_8_seg :                       	org = 0x00008A3C, len = 0x175C4
15  dram1_0_seg :                       	org = 0x00820000, len = 0x10000
16  dram0_0_seg :                       	org = 0x00880000, len = 0x10000
17}
18
19PHDRS
20{
21  iram0_0_phdr PT_LOAD;
22  iram1_0_phdr PT_LOAD;
23  iram1_1_phdr PT_LOAD;
24  iram1_2_phdr PT_LOAD;
25  iram1_3_phdr PT_LOAD;
26  iram1_4_phdr PT_LOAD;
27  iram1_5_phdr PT_LOAD;
28  iram1_6_phdr PT_LOAD;
29  iram1_7_phdr PT_LOAD;
30  iram1_8_phdr PT_LOAD;
31  dram1_0_phdr PT_LOAD;
32  dram1_0_bss_phdr PT_LOAD;
33  dram0_0_phdr PT_LOAD;
34}
35
36
37/*  Default entry point:  */
38ENTRY(_ResetVector)
39
40
41/*  Memory boundary addresses:  */
42_memmap_mem_iram0_start = 0x0;
43_memmap_mem_iram0_end   = 0x400;
44_memmap_mem_iram1_start = 0x8400;
45_memmap_mem_iram1_end   = 0x20000;
46_memmap_mem_dram0_start = 0x880000;
47_memmap_mem_dram0_end   = 0x890000;
48_memmap_mem_dram1_start = 0x820000;
49_memmap_mem_dram1_end   = 0x830000;
50
51/*  Memory segment boundary addresses:  */
52_memmap_seg_iram0_0_start = 0x0;
53_memmap_seg_iram0_0_max   = 0x400;
54_memmap_seg_iram1_0_start = 0x8400;
55_memmap_seg_iram1_0_max   = 0x857c;
56_memmap_seg_iram1_1_start = 0x857c;
57_memmap_seg_iram1_1_max   = 0x859c;
58_memmap_seg_iram1_2_start = 0x859c;
59_memmap_seg_iram1_2_max   = 0x85bc;
60_memmap_seg_iram1_3_start = 0x85bc;
61_memmap_seg_iram1_3_max   = 0x85dc;
62_memmap_seg_iram1_4_start = 0x85dc;
63_memmap_seg_iram1_4_max   = 0x85fc;
64_memmap_seg_iram1_5_start = 0x85fc;
65_memmap_seg_iram1_5_max   = 0x861c;
66_memmap_seg_iram1_6_start = 0x861c;
67_memmap_seg_iram1_6_max   = 0x863c;
68_memmap_seg_iram1_7_start = 0x863c;
69_memmap_seg_iram1_7_max   = 0x8a3c;
70_memmap_seg_iram1_8_start = 0x8a3c;
71_memmap_seg_iram1_8_max   = 0x20000;
72_memmap_seg_dram1_0_start = 0x820000;
73_memmap_seg_dram1_0_max   = 0x830000;
74_memmap_seg_dram0_0_start = 0x880000;
75_memmap_seg_dram0_0_max   = 0x890000;
76
77_rom_store_table = 0;
78PROVIDE(_memmap_reset_vector = 0x0);
79PROVIDE(_memmap_vecbase_reset = 0x8400);
80/* Various memory-map dependent cache attribute settings: */
81_memmap_cacheattr_wb_base = 0x00000002;
82_memmap_cacheattr_wt_base = 0x00000002;
83_memmap_cacheattr_bp_base = 0x00000002;
84_memmap_cacheattr_unused_mask = 0xFFFFFFF0;
85_memmap_cacheattr_wb_trapnull = 0x22222222;
86_memmap_cacheattr_wba_trapnull = 0x22222222;
87_memmap_cacheattr_wbna_trapnull = 0x22222222;
88_memmap_cacheattr_wt_trapnull = 0x22222222;
89_memmap_cacheattr_bp_trapnull = 0x22222222;
90_memmap_cacheattr_wb_strict = 0xFFFFFFF2;
91_memmap_cacheattr_wt_strict = 0xFFFFFFF2;
92_memmap_cacheattr_bp_strict = 0xFFFFFFF2;
93_memmap_cacheattr_wb_allvalid = 0x22222222;
94_memmap_cacheattr_wt_allvalid = 0x22222222;
95_memmap_cacheattr_bp_allvalid = 0x22222222;
96_memmap_region_map = 0x00000001;
97PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull);
98
99SECTIONS
100{
101
102  .ResetVector.text : ALIGN(4)
103  {
104    _ResetVector_text_start = ABSOLUTE(.);
105    KEEP (*(.ResetVector.text))
106    . = ALIGN (4);
107    _ResetVector_text_end = ABSOLUTE(.);
108  } >iram0_0_seg :iram0_0_phdr
109
110  .ResetHandler.text : ALIGN(4)
111  {
112    _ResetHandler_text_start = ABSOLUTE(.);
113    *(.ResetHandler.literal .ResetHandler.text)
114    . = ALIGN (4);
115    _ResetHandler_text_end = ABSOLUTE(.);
116    _memmap_seg_iram0_0_end = ALIGN(0x8);
117  } >iram0_0_seg :iram0_0_phdr
118
119  _memmap_mem_iram0_max = ABSOLUTE(.);
120
121  .WindowVectors.text : ALIGN(4)
122  {
123    _WindowVectors_text_start = ABSOLUTE(.);
124    KEEP (*(.WindowVectors.text))
125    . = ALIGN (4);
126    _WindowVectors_text_end = ABSOLUTE(.);
127  } >iram1_0_seg :iram1_0_phdr
128
129  .Level2InterruptVector.literal : ALIGN(4)
130  {
131    _Level2InterruptVector_literal_start = ABSOLUTE(.);
132    *(.Level2InterruptVector.literal)
133    . = ALIGN (4);
134    _Level2InterruptVector_literal_end = ABSOLUTE(.);
135    _memmap_seg_iram1_0_end = ALIGN(0x8);
136  } >iram1_0_seg :iram1_0_phdr
137
138
139  .Level2InterruptVector.text : ALIGN(4)
140  {
141    _Level2InterruptVector_text_start = ABSOLUTE(.);
142    KEEP (*(.Level2InterruptVector.text))
143    . = ALIGN (4);
144    _Level2InterruptVector_text_end = ABSOLUTE(.);
145  } >iram1_1_seg :iram1_1_phdr
146
147  .Level3InterruptVector.literal : ALIGN(4)
148  {
149    _Level3InterruptVector_literal_start = ABSOLUTE(.);
150    *(.Level3InterruptVector.literal)
151    . = ALIGN (4);
152    _Level3InterruptVector_literal_end = ABSOLUTE(.);
153    _memmap_seg_iram1_1_end = ALIGN(0x8);
154  } >iram1_1_seg :iram1_1_phdr
155
156
157  .Level3InterruptVector.text : ALIGN(4)
158  {
159    _Level3InterruptVector_text_start = ABSOLUTE(.);
160    KEEP (*(.Level3InterruptVector.text))
161    . = ALIGN (4);
162    _Level3InterruptVector_text_end = ABSOLUTE(.);
163  } >iram1_2_seg :iram1_2_phdr
164
165  .DebugExceptionVector.literal : ALIGN(4)
166  {
167    _DebugExceptionVector_literal_start = ABSOLUTE(.);
168    *(.DebugExceptionVector.literal)
169    . = ALIGN (4);
170    _DebugExceptionVector_literal_end = ABSOLUTE(.);
171    _memmap_seg_iram1_2_end = ALIGN(0x8);
172  } >iram1_2_seg :iram1_2_phdr
173
174
175  .DebugExceptionVector.text : ALIGN(4)
176  {
177    _DebugExceptionVector_text_start = ABSOLUTE(.);
178    KEEP (*(.DebugExceptionVector.text))
179    . = ALIGN (4);
180    _DebugExceptionVector_text_end = ABSOLUTE(.);
181  } >iram1_3_seg :iram1_3_phdr
182
183  .NMIExceptionVector.literal : ALIGN(4)
184  {
185    _NMIExceptionVector_literal_start = ABSOLUTE(.);
186    *(.NMIExceptionVector.literal)
187    . = ALIGN (4);
188    _NMIExceptionVector_literal_end = ABSOLUTE(.);
189    _memmap_seg_iram1_3_end = ALIGN(0x8);
190  } >iram1_3_seg :iram1_3_phdr
191
192
193  .NMIExceptionVector.text : ALIGN(4)
194  {
195    _NMIExceptionVector_text_start = ABSOLUTE(.);
196    KEEP (*(.NMIExceptionVector.text))
197    . = ALIGN (4);
198    _NMIExceptionVector_text_end = ABSOLUTE(.);
199  } >iram1_4_seg :iram1_4_phdr
200
201  .KernelExceptionVector.literal : ALIGN(4)
202  {
203    _KernelExceptionVector_literal_start = ABSOLUTE(.);
204    *(.KernelExceptionVector.literal)
205    . = ALIGN (4);
206    _KernelExceptionVector_literal_end = ABSOLUTE(.);
207    _memmap_seg_iram1_4_end = ALIGN(0x8);
208  } >iram1_4_seg :iram1_4_phdr
209
210
211  .KernelExceptionVector.text : ALIGN(4)
212  {
213    _KernelExceptionVector_text_start = ABSOLUTE(.);
214    KEEP (*(.KernelExceptionVector.text))
215    . = ALIGN (4);
216    _KernelExceptionVector_text_end = ABSOLUTE(.);
217  } >iram1_5_seg :iram1_5_phdr
218
219  .UserExceptionVector.literal : ALIGN(4)
220  {
221    _UserExceptionVector_literal_start = ABSOLUTE(.);
222    *(.UserExceptionVector.literal)
223    . = ALIGN (4);
224    _UserExceptionVector_literal_end = ABSOLUTE(.);
225    _memmap_seg_iram1_5_end = ALIGN(0x8);
226  } >iram1_5_seg :iram1_5_phdr
227
228
229  .UserExceptionVector.text : ALIGN(4)
230  {
231    _UserExceptionVector_text_start = ABSOLUTE(.);
232    KEEP (*(.UserExceptionVector.text))
233    . = ALIGN (4);
234    _UserExceptionVector_text_end = ABSOLUTE(.);
235  } >iram1_6_seg :iram1_6_phdr
236
237  .DoubleExceptionVector.literal : ALIGN(4)
238  {
239    _DoubleExceptionVector_literal_start = ABSOLUTE(.);
240    *(.DoubleExceptionVector.literal)
241    . = ALIGN (4);
242    _DoubleExceptionVector_literal_end = ABSOLUTE(.);
243    _memmap_seg_iram1_6_end = ALIGN(0x8);
244  } >iram1_6_seg :iram1_6_phdr
245
246
247  .DoubleExceptionVector.text : ALIGN(4)
248  {
249    _DoubleExceptionVector_text_start = ABSOLUTE(.);
250    KEEP (*(.DoubleExceptionVector.text))
251    . = ALIGN (4);
252    _DoubleExceptionVector_text_end = ABSOLUTE(.);
253    _memmap_seg_iram1_7_end = ALIGN(0x8);
254  } >iram1_7_seg :iram1_7_phdr
255
256
257  __llvm_prf_names : ALIGN(4)
258  {
259    __llvm_prf_names_start = ABSOLUTE(.);
260    KEEP (*(__llvm_prf_names))
261    . = ALIGN (4);
262    __llvm_prf_names_end = ABSOLUTE(.);
263  } >iram1_8_seg :iram1_8_phdr
264
265  .text : ALIGN(4)
266  {
267    _stext = .;
268    _text_start = ABSOLUTE(.);
269    *(.entry.text)
270    *(.init.literal)
271    KEEP(*(.init))
272    *(.literal.sort.* SORT(.text.sort.*))
273    KEEP (*(.literal.keepsort.* SORT(.text.keepsort.*) .literal.keep.* .text.keep.* .literal.*personality* .text.*personality*))
274    *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
275    *(.fini.literal)
276    KEEP(*(.fini))
277    *(.gnu.version)
278    . = ALIGN (4);
279    _text_end = ABSOLUTE(.);
280    _etext = .;
281  } >iram1_8_seg :iram1_8_phdr
282
283  .clib.text : ALIGN(4)
284  {
285    _clib_text_start = ABSOLUTE(.);
286    *(.clib.literal .clib.text)
287    . = ALIGN (4);
288    _clib_text_end = ABSOLUTE(.);
289  } >iram1_8_seg :iram1_8_phdr
290
291  .rtos.text : ALIGN(4)
292  {
293    _rtos_text_start = ABSOLUTE(.);
294    *(.rtos.literal .rtos.text)
295    . = ALIGN (4);
296    _rtos_text_end = ABSOLUTE(.);
297  } >iram1_8_seg :iram1_8_phdr
298
299  _memmap_mem_iram1_max = ABSOLUTE(.);
300
301  .clib.rodata : ALIGN(4)
302  {
303    _clib_rodata_start = ABSOLUTE(.);
304    *(.clib.rodata)
305    . = ALIGN (4);
306    _clib_rodata_end = ABSOLUTE(.);
307  } >dram1_0_seg :dram1_0_phdr
308
309  .rtos.rodata : ALIGN(4)
310  {
311    _rtos_rodata_start = ABSOLUTE(.);
312    *(.rtos.rodata)
313    . = ALIGN (4);
314    _rtos_rodata_end = ABSOLUTE(.);
315  } >dram1_0_seg :dram1_0_phdr
316
317  .rodata : ALIGN(4)
318  {
319    _rodata_start = ABSOLUTE(.);
320    *(.rodata)
321    *(SORT(.rodata.sort.*))
322    KEEP (*(SORT(.rodata.keepsort.*) .rodata.keep.*))
323    *(.rodata.*)
324    *(.gnu.linkonce.r.*)
325    *(.rodata1)
326    __XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
327    KEEP (*(.xt_except_table))
328    KEEP (*(.gcc_except_table))
329    *(.gnu.linkonce.e.*)
330    *(.gnu.version_r)
331    KEEP (*(.eh_frame))
332    /*  C++ constructor and destructor tables, properly ordered:  */
333    KEEP (*crtbegin.o(.ctors))
334    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
335    KEEP (*(SORT(.ctors.*)))
336    KEEP (*(.ctors))
337    KEEP (*crtbegin.o(.dtors))
338    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
339    KEEP (*(SORT(.dtors.*)))
340    KEEP (*(.dtors))
341    /*  C++ exception handlers table:  */
342    __XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
343    *(.xt_except_desc)
344    *(.gnu.linkonce.h.*)
345    __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
346    *(.xt_except_desc_end)
347    *(.dynamic)
348    *(.gnu.version_d)
349    . = ALIGN(4);		/* this table MUST be 4-byte aligned */
350    _bss_table_start = ABSOLUTE(.);
351    LONG(_bss_start)
352    LONG(_bss_end)
353    _bss_table_end = ABSOLUTE(.);
354    . = ALIGN (4);
355    _rodata_end = ABSOLUTE(.);
356  } >dram1_0_seg :dram1_0_phdr
357
358  .clib.data : ALIGN(4)
359  {
360    _clib_data_start = ABSOLUTE(.);
361    *(.clib.data)
362    . = ALIGN (4);
363    _clib_data_end = ABSOLUTE(.);
364  } >dram1_0_seg :dram1_0_phdr
365
366  .clib.percpu.data : ALIGN(4)
367  {
368    _clib_percpu_data_start = ABSOLUTE(.);
369    *(.clib.percpu.data)
370    . = ALIGN (4);
371    _clib_percpu_data_end = ABSOLUTE(.);
372  } >dram1_0_seg :dram1_0_phdr
373
374  .rtos.percpu.data : ALIGN(4)
375  {
376    _rtos_percpu_data_start = ABSOLUTE(.);
377    *(.rtos.percpu.data)
378    . = ALIGN (4);
379    _rtos_percpu_data_end = ABSOLUTE(.);
380  } >dram1_0_seg :dram1_0_phdr
381
382  .rtos.data : ALIGN(4)
383  {
384    _rtos_data_start = ABSOLUTE(.);
385    *(.rtos.data)
386    . = ALIGN (4);
387    _rtos_data_end = ABSOLUTE(.);
388  } >dram1_0_seg :dram1_0_phdr
389
390  .data : ALIGN(4)
391  {
392    _data_start = ABSOLUTE(.);
393    *(.data)
394    *(SORT(.data.sort.*))
395    KEEP (*(SORT(.data.keepsort.*) .data.keep.*))
396    *(.data.*)
397    *(.gnu.linkonce.d.*)
398    KEEP(*(.gnu.linkonce.d.*personality*))
399    *(.data1)
400    *(.sdata)
401    *(.sdata.*)
402    *(.gnu.linkonce.s.*)
403    *(.sdata2)
404    *(.sdata2.*)
405    *(.gnu.linkonce.s2.*)
406    KEEP(*(.jcr))
407    *(__llvm_prf_cnts)
408    *(__llvm_prf_data)
409    *(__llvm_prf_vnds)
410    . = ALIGN (4);
411    _data_end = ABSOLUTE(.);
412  } >dram1_0_seg :dram1_0_phdr
413
414  .bss (NOLOAD) : ALIGN(8)
415  {
416    . = ALIGN (8);
417    _bss_start = ABSOLUTE(.);
418    *(.dynsbss)
419    *(.sbss)
420    *(.sbss.*)
421    *(.gnu.linkonce.sb.*)
422    *(.scommon)
423    *(.sbss2)
424    *(.sbss2.*)
425    *(.gnu.linkonce.sb2.*)
426    *(.dynbss)
427    *(.bss)
428    *(SORT(.bss.sort.*))
429    KEEP (*(SORT(.bss.keepsort.*) .bss.keep.*))
430    *(.bss.*)
431    *(.gnu.linkonce.b.*)
432    *(COMMON)
433    *(.clib.bss)
434    *(.clib.percpu.bss)
435    *(.rtos.percpu.bss)
436    *(.rtos.bss)
437    . = ALIGN (8);
438    _bss_end = ABSOLUTE(.);
439    _end = ALIGN(0x8);
440    PROVIDE(end = ALIGN(0x8));
441    _stack_sentry = ALIGN(0x8);
442    _memmap_seg_dram1_0_end = ALIGN(0x8);
443  } >dram1_0_seg :dram1_0_bss_phdr
444
445  PROVIDE(__stack = 0x830000);
446  _heap_sentry = 0x830000;
447  _memmap_mem_dram1_max = ABSOLUTE(.);
448
449  .shmem : ALIGN(4)
450  {
451    _shmem_start = ABSOLUTE(.);
452    *(.shmem)
453    . = ALIGN (4);
454    _shmem_end = ABSOLUTE(.);
455    _memmap_seg_dram0_0_end = ALIGN(0x8);
456  } >dram0_0_seg :dram0_0_phdr
457
458
459  _memmap_mem_dram0_max = ABSOLUTE(.);
460
461  .debug  0 :  { *(.debug) }
462  .line  0 :  { *(.line) }
463  .debug_srcinfo  0 :  { *(.debug_srcinfo) }
464  .debug_sfnames  0 :  { *(.debug_sfnames) }
465  .debug_aranges  0 :  { *(.debug_aranges) }
466  .debug_pubnames  0 :  { *(.debug_pubnames) }
467  .debug_info  0 :  { *(.debug_info) }
468  .debug_abbrev  0 :  { *(.debug_abbrev) }
469  .debug_line  0 :  { *(.debug_line) }
470  .debug_frame  0 :  { *(.debug_frame) }
471  .debug_str  0 :  { *(.debug_str) }
472  .debug_loc  0 :  { *(.debug_loc) }
473  .debug_macinfo  0 :  { *(.debug_macinfo) }
474  .debug_weaknames  0 :  { *(.debug_weaknames) }
475  .debug_funcnames  0 :  { *(.debug_funcnames) }
476  .debug_typenames  0 :  { *(.debug_typenames) }
477  .debug_varnames  0 :  { *(.debug_varnames) }
478  .xt.insn 0 :
479  {
480    KEEP (*(.xt.insn))
481    KEEP (*(.gnu.linkonce.x.*))
482  }
483  .xt.prop 0 :
484  {
485    KEEP (*(.xt.prop))
486    KEEP (*(.xt.prop.*))
487    KEEP (*(.gnu.linkonce.prop.*))
488  }
489  .xt.lit 0 :
490  {
491    KEEP (*(.xt.lit))
492    KEEP (*(.xt.lit.*))
493    KEEP (*(.gnu.linkonce.p.*))
494  }
495  .debug.xt.callgraph 0 :
496  {
497    KEEP (*(.debug.xt.callgraph .debug.xt.callgraph.* .gnu.linkonce.xt.callgraph.*))
498  }
499  .note.gnu.build-id 0 :
500  {
501    KEEP(*(.note.gnu.build-id))
502  }
503}
504
505