1/*
2 * Copyright (c) 2022,2024 AMD
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6/*
7 * @file
8 * @brief Linker command/script file
9 *
10 * Linker script for the AMD acp_6_0 platform
11 */
12
13OUTPUT_ARCH(xtensa)
14
15#include <zephyr/devicetree.h>
16#include <xtensa/config/core-isa.h>
17#include <memory.h>
18#include <zephyr/linker/sections.h>
19
20#include <zephyr/linker/linker-defs.h>
21#include <zephyr/linker/linker-tool.h>
22
23PROVIDE(__memctl_default = 0x00000000);
24PROVIDE(_MemErrorHandler = 0x00000000);
25
26#define RAMABLE_REGION sdram0 :sdram0_phdr
27#define ROMABLE_REGION sdram0 :sdram0_phdr
28
29MEMORY
30{
31  vector_reset_text :
32        org = XCHAL_RESET_VECTOR_PADDR_IRAM,
33        len = MEM_RESET_TEXT_SIZE
34  vector_reset_lit :
35        org = XCHAL_RESET_VECTOR_PADDR_IRAM + MEM_RESET_TEXT_SIZE,
36        len = MEM_RESET_LIT_SIZE
37  vector_base_text :
38        org = XCHAL_WINDOW_VECTORS_PADDR_IRAM, //XCHAL_VECBASE_RESET_PADDR,
39        len = MEM_VECBASE_LIT_SIZE
40  vector_int2_lit :
41        org = XCHAL_INTLEVEL2_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
42        len = MEM_VECT_LIT_SIZE
43  vector_int2_text :
44        org = XCHAL_INTLEVEL2_VECTOR_PADDR_IRAM,
45        len = MEM_VECT_TEXT_SIZE
46  vector_int3_lit :
47        org = XCHAL_INTLEVEL3_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
48        len = MEM_VECT_LIT_SIZE
49  vector_int3_text :
50        org = XCHAL_INTLEVEL3_VECTOR_PADDR_IRAM,
51        len = MEM_VECT_TEXT_SIZE
52  vector_int4_lit :
53        org = XCHAL_INTLEVEL4_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
54        len = MEM_VECT_LIT_SIZE
55  vector_int4_text :
56        org = XCHAL_INTLEVEL4_VECTOR_PADDR_IRAM,
57        len = MEM_VECT_TEXT_SIZE
58  vector_int5_lit :
59        org = XCHAL_INTLEVEL5_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
60        len = MEM_VECT_LIT_SIZE
61  vector_int5_text :
62        org = XCHAL_INTLEVEL5_VECTOR_PADDR_IRAM,
63        len = MEM_VECT_TEXT_SIZE
64  vector_int6_lit :
65        org = XCHAL_INTLEVEL6_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
66        len = MEM_VECT_LIT_SIZE
67  vector_int6_text :
68        org = XCHAL_INTLEVEL6_VECTOR_PADDR_IRAM,
69        len = MEM_VECT_TEXT_SIZE
70
71  vector_int7_lit :
72        org = XCHAL_INTLEVEL7_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
73        len = MEM_VECT_LIT_SIZE
74  vector_int7_text :
75        org = XCHAL_INTLEVEL7_VECTOR_PADDR_IRAM,
76        len = MEM_VECT_TEXT_SIZE
77  vector_kernel_lit :
78        org = XCHAL_KERNEL_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
79        len = MEM_VECT_LIT_SIZE
80  vector_kernel_text :
81        org = XCHAL_KERNEL_VECTOR_PADDR_IRAM,
82        len = MEM_VECT_TEXT_SIZE
83  vector_user_lit :
84        org = XCHAL_USER_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
85        len = MEM_VECT_LIT_SIZE
86  vector_user_text :
87        org = XCHAL_USER_VECTOR_PADDR_IRAM,
88        len = MEM_VECT_TEXT_SIZE
89  vector_double_lit :
90        org = XCHAL_DOUBLEEXC_VECTOR_PADDR_IRAM - MEM_VECT_LIT_SIZE,
91        len = MEM_VECT_LIT_SIZE
92  vector_double_text :
93        org = XCHAL_DOUBLEEXC_VECTOR_PADDR_IRAM,
94        len = MEM_VECT_TEXT_SIZE
95  iram_text_start :
96        org = XCHAL_DOUBLEEXC_VECTOR_PADDR_IRAM + MEM_VECT_TEXT_SIZE,
97        len = (IRAM_BASE + IRAM_SIZE) - (XCHAL_DOUBLEEXC_VECTOR_PADDR_IRAM + MEM_VECT_TEXT_SIZE)
98
99  sdram0 :
100        org = DRAM0_BASE,
101        len = DRAM0_SIZE
102  sdram1 :
103        org = SRAM1_BASE,
104        len = SRAM1_SIZE
105
106#ifdef CONFIG_GEN_ISR_TABLES
107  IDT_LIST :
108	org = IDT_BASE,
109        len = IDT_SIZE
110#endif
111
112  static_uuid_entries_seg (!ari) :
113	org = UUID_ENTRY_ELF_BASE,
114	len = UUID_ENTRY_ELF_SIZE
115  static_log_entries_seg (!ari) :
116        org = LOG_ENTRY_ELF_BASE,
117        len = LOG_ENTRY_ELF_SIZE
118  fw_metadata_seg (!ari) :
119        org = EXT_MANIFEST_ELF_BASE,
120        len = EXT_MANIFEST_ELF_SIZE
121}
122
123PHDRS
124{
125  vector_reset_text_phdr PT_LOAD;
126  vector_reset_lit_phdr PT_LOAD;
127  vector_base_text_phdr PT_LOAD;
128  vector_base_lit_phdr PT_LOAD;
129  vector_int2_text_phdr PT_LOAD;
130  vector_int2_lit_phdr PT_LOAD;
131  vector_int3_text_phdr PT_LOAD;
132  vector_int3_lit_phdr PT_LOAD;
133  vector_int4_text_phdr PT_LOAD;
134  vector_int4_lit_phdr PT_LOAD;
135  vector_int5_text_phdr PT_LOAD;
136  vector_int5_lit_phdr PT_LOAD;
137  vector_int6_text_phdr PT_LOAD;
138  vector_int6_lit_phdr PT_LOAD;
139  vector_int7_text_phdr PT_LOAD;
140  vector_int7_lit_phdr PT_LOAD;
141  vector_kernel_text_phdr PT_LOAD;
142  vector_kernel_lit_phdr PT_LOAD;
143  vector_user_text_phdr PT_LOAD;
144  vector_user_lit_phdr PT_LOAD;
145  vector_double_text_phdr PT_LOAD;
146  vector_double_lit_phdr PT_LOAD;
147  iram_text_start_phdr PT_LOAD;
148  sdram0_phdr PT_LOAD;
149  sdram1_phdr PT_LOAD;
150  static_uuid_entries_phdr PT_NOTE;
151  static_log_entries_phdr PT_NOTE;
152  metadata_entries_phdr PT_NOTE;
153}
154
155/*  Default entry point:  */
156/*ENTRY(_ResetVector)*/
157_rom_store_table = 0;
158
159/* ABI0 does not use Window base */
160PROVIDE(_memmap_vecbase_reset = XCHAL_WINDOW_VECTORS_PADDR);
161
162ENTRY(CONFIG_KERNEL_ENTRY)
163
164/* Various memory-map dependent cache attribute settings: */
165_memmap_cacheattr_wb_base = 0x44024000;
166_memmap_cacheattr_wt_base = 0x11021000;
167_memmap_cacheattr_bp_base = 0x22022000;
168_memmap_cacheattr_unused_mask = 0x00F00FFF;
169_memmap_cacheattr_wb_trapnull = 0x4422422F;
170_memmap_cacheattr_wba_trapnull = 0x4422422F;
171_memmap_cacheattr_wbna_trapnull = 0x25222222;
172_memmap_cacheattr_wt_trapnull = 0x1122122F;
173_memmap_cacheattr_bp_trapnull = 0x2222222F;
174_memmap_cacheattr_wb_strict = 0x44F24FFF;
175_memmap_cacheattr_wt_strict = 0x11F21FFF;
176_memmap_cacheattr_bp_strict = 0x22F22FFF;
177_memmap_cacheattr_wb_allvalid = 0x44224222;
178_memmap_cacheattr_wt_allvalid = 0x11221222;
179_memmap_cacheattr_bp_allvalid = 0x22222222;
180PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wbna_trapnull);
181_EXT_MAN_ALIGN_ = 16;
182EXTERN(ext_man_fw_ver)
183
184SECTIONS
185{
186
187  #include <zephyr/linker/rel-sections.ld>
188#ifdef CONFIG_LLEXT
189#include <zephyr/linker/llext-sections.ld>
190#endif
191  .ResetVector.text : ALIGN(4)
192  {
193    _ResetVector_text_start = ABSOLUTE(.);
194    KEEP (*(.ResetVector.text))
195    _ResetVector_text_end = ABSOLUTE(.);
196  } >vector_reset_text :vector_reset_text_phdr
197
198  .ResetVector.literal : ALIGN(4)
199  {
200    _ResetVector_literal_start = ABSOLUTE(.);
201    *(.ResetVector.literal)
202    _ResetVector_literal_end = ABSOLUTE(.);
203  } >vector_reset_lit :vector_reset_lit_phdr
204
205  .WindowVectors.text : ALIGN(4)
206  {
207    _WindowVectors_text_start = ABSOLUTE(.);
208    KEEP (*(.WindowVectors.text))
209    _WindowVectors_text_end = ABSOLUTE(.);
210  } >vector_base_text :vector_base_text_phdr
211
212  .Level2InterruptVector.literal : ALIGN(4)
213  {
214    _Level2InterruptVector_literal_start = ABSOLUTE(.);
215    *(.Level2InterruptVector.literal)
216    _Level2InterruptVector_literal_end = ABSOLUTE(.);
217  } >vector_int2_lit :vector_int2_lit_phdr
218
219  .Level2InterruptVector.text : ALIGN(4)
220  {
221    _Level2InterruptVector_text_start = ABSOLUTE(.);
222    KEEP (*(.Level2InterruptVector.text))
223    _Level2InterruptVector_text_end = ABSOLUTE(.);
224  } >vector_int2_text :vector_int2_text_phdr
225
226  .Level3InterruptVector.literal : ALIGN(4)
227  {
228    _Level3InterruptVector_literal_start = ABSOLUTE(.);
229    *(.Level3InterruptVector.literal)
230    _Level3InterruptVector_literal_end = ABSOLUTE(.);
231  } >vector_int3_lit :vector_int3_lit_phdr
232
233  .Level3InterruptVector.text : ALIGN(4)
234  {
235    _Level3InterruptVector_text_start = ABSOLUTE(.);
236    KEEP (*(.Level3InterruptVector.text))
237    _Level3InterruptVector_text_end = ABSOLUTE(.);
238  } >vector_int3_text :vector_int3_text_phdr
239
240  .Level4InterruptVector.literal : ALIGN(4)
241  {
242    _Level4InterruptVector_literal_start = ABSOLUTE(.);
243    *(.Level4InterruptVector.literal)
244    _Level4InterruptVector_literal_end = ABSOLUTE(.);
245  } >vector_int4_lit :vector_int4_lit_phdr
246
247  .Level4InterruptVector.text : ALIGN(4)
248  {
249    _Level4InterruptVector_text_start = ABSOLUTE(.);
250    KEEP (*(.Level4InterruptVector.text))
251    _Level4InterruptVector_text_end = ABSOLUTE(.);
252  } >vector_int4_text :vector_int4_text_phdr
253
254  .Level5InterruptVector.literal : ALIGN(4)
255  {
256    _Level5InterruptVector_literal_start = ABSOLUTE(.);
257    *(.Level5InterruptVector.literal)
258    _Level5InterruptVector_literal_end = ABSOLUTE(.);
259  } >vector_int5_lit :vector_int5_lit_phdr
260
261  .Level5InterruptVector.text : ALIGN(4)
262  {
263    _Level5InterruptVector_text_start = ABSOLUTE(.);
264    KEEP (*(.Level5InterruptVector.text))
265    _Level5InterruptVector_text_end = ABSOLUTE(.);
266  } >vector_int5_text :vector_int5_text_phdr
267
268  .DebugExceptionVector.literal : ALIGN(4)
269  {
270    _DebugExceptionVector_literal_start = ABSOLUTE(.);
271    *(.DebugExceptionVector.literal)
272    _DebugExceptionVector_literal_end = ABSOLUTE(.);
273  } >vector_int6_lit :vector_int6_lit_phdr
274
275  .DebugExceptionVector.text : ALIGN(4)
276  {
277    _DebugExceptionVector_text_start = ABSOLUTE(.);
278    KEEP (*(.DebugExceptionVector.text))
279    _DebugExceptionVector_text_end = ABSOLUTE(.);
280  } >vector_int6_text :vector_int6_text_phdr
281
282  .NMIExceptionVector.literal : ALIGN(4)
283  {
284    _NMIExceptionVector_literal_start = ABSOLUTE(.);
285    *(.NMIExceptionVector.literal)
286    _NMIExceptionVector_literal_end = ABSOLUTE(.);
287  } >vector_int7_lit :vector_int5_lit_phdr
288
289  .NMIExceptionVector.text : ALIGN(4)
290  {
291    _NMIExceptionVector_text_start = ABSOLUTE(.);
292    KEEP (*(.NMIExceptionVector.text))
293    _NMIExceptionVector_text_end = ABSOLUTE(.);
294  } >vector_int7_text :vector_int5_text_phdr
295
296  .KernelExceptionVector.literal : ALIGN(4)
297  {
298    _KernelExceptionVector_literal_start = ABSOLUTE(.);
299    *(.KernelExceptionVector.literal)
300    _KernelExceptionVector_literal_end = ABSOLUTE(.);
301  } >vector_kernel_lit :vector_kernel_lit_phdr
302
303  .KernelExceptionVector.text : ALIGN(4)
304  {
305    _KernelExceptionVector_text_start = ABSOLUTE(.);
306    KEEP (*(.KernelExceptionVector.text))
307    _KernelExceptionVector_text_end = ABSOLUTE(.);
308  } >vector_kernel_text :vector_kernel_text_phdr
309
310  .UserExceptionVector.literal : ALIGN(4)
311  {
312    _UserExceptionVector_literal_start = ABSOLUTE(.);
313    *(.UserExceptionVector.literal)
314    _UserExceptionVector_literal_end = ABSOLUTE(.);
315  } >vector_user_lit :vector_user_lit_phdr
316
317  .UserExceptionVector.text : ALIGN(4)
318  {
319    _UserExceptionVector_text_start = ABSOLUTE(.);
320    KEEP (*(.UserExceptionVector.text))
321    _UserExceptionVector_text_end = ABSOLUTE(.);
322  } >vector_user_text :vector_user_text_phdr
323
324  .DoubleExceptionVector.literal : ALIGN(4)
325  {
326    _DoubleExceptionVector_literal_start = ABSOLUTE(.);
327    *(.DoubleExceptionVector.literal)
328    _DoubleExceptionVector_literal_end = ABSOLUTE(.);
329  } >vector_double_lit :vector_double_lit_phdr
330
331  .DoubleExceptionVector.text : ALIGN(4)
332  {
333    _DoubleExceptionVector_text_start = ABSOLUTE(.);
334    KEEP (*(.DoubleExceptionVector.text))
335    _DoubleExceptionVector_text_end = ABSOLUTE(.);
336  } >vector_double_text :vector_double_text_phdr
337
338  .iram.text : ALIGN(4)
339  {
340    _stext = .;
341    _iram_text_start = ABSOLUTE(.);
342    *(.iram0.literal .iram.literal .iram.text.literal .iram0.text .iram.text)
343    _iram_text_end = ABSOLUTE(.);
344  } >iram_text_start :iram_text_start_phdr
345/* stack */
346 _end = SOF_STACK_END;
347  PROVIDE(end = SOF_STACK_END);
348  _stack_sentry = SOF_STACK_END;
349  __stack = SOF_STACK_BASE;
350
351  .text : ALIGN(4)
352  {
353    _stext = .;
354    __text_region_start = ABSOLUTE(.);
355      KEEP (*(.ResetVector.text))
356    *(.ResetVector.literal)   /* default is _start in zephyr, set it to reset vector as in sof */
357    *(.entry.text)
358    *(.init.literal)
359    KEEP(*(.init))
360    *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
361    *(.fini.literal)
362    KEEP(*(.fini))
363    *(.gnu.version)
364    __text_region_end = ABSOLUTE(.);
365    _etext = .;
366  } >iram_text_start :iram_text_start_phdr
367
368
369  .rodata : ALIGN(4)
370  {
371    __rodata_region_start = ABSOLUTE(.);
372    *(.rodata)
373    *(.rodata.*)
374    *(.gnu.linkonce.r.*)
375    *(.rodata1)
376    __XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
377    KEEP (*(.xt_except_table))
378    KEEP (*(.gcc_except_table .gcc_except_table.*))
379    *(.gnu.linkonce.e.*)
380    *(.gnu.version_r)
381    KEEP (*(.eh_frame))
382    /*  C++ constructor and destructor tables, properly ordered:  */
383    KEEP (*crtbegin.o(.ctors))
384    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
385    KEEP (*(SORT(.ctors.*)))
386    KEEP (*(.ctors))
387    KEEP (*crtbegin.o(.dtors))
388    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
389    KEEP (*(SORT(.dtors.*)))
390    KEEP (*(.dtors))
391    /*  C++ exception handlers table:  */
392    __XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
393    *(.xt_except_desc)
394    *(.gnu.linkonce.h.*)
395    __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
396    *(.xt_except_desc_end)
397    *(.dynamic)
398    *(.gnu.version_d)
399    . = ALIGN(4);		/* this table MUST be 4-byte aligned */
400    _bss_table_start = ABSOLUTE(.);
401    LONG(_bss_start)
402    LONG(_bss_end)
403    _bss_table_end = ABSOLUTE(.);
404    __rodata_region_end = ABSOLUTE(.);
405  } >sdram0 :sdram0_phdr
406
407  .module_init : ALIGN(4)
408  {
409   _module_init_start = ABSOLUTE(.);
410    *(*.initcall)
411    _module_init_end = ABSOLUTE(.);
412  } >sdram0 :sdram0_phdr
413
414
415
416  #include <zephyr/linker/common-rom.ld>
417
418
419   .fw_ready : ALIGN(4)
420  {
421    KEEP (*(.fw_ready))
422  } >sdram0 :sdram0_phdr
423
424  .noinit : ALIGN(4)
425  {
426    *(.noinit)
427    *(.noinit.*)
428  } >sdram0 :sdram0_phdr
429
430
431  .data : ALIGN(4)
432  {
433    __data_start = ABSOLUTE(.);
434    *(.data)
435    *(.data.*)
436    *(.gnu.linkonce.d.*)
437    KEEP(*(.gnu.linkonce.d.*personality*))
438    *(.data1)
439    *(.sdata)
440    *(.sdata.*)
441    *(.gnu.linkonce.s.*)
442    *(.sdata2)
443    *(.sdata2.*)
444    *(.gnu.linkonce.s2.*)
445    KEEP(*(.jcr))
446    _trace_ctx_start = ABSOLUTE(.);
447    *(.trace_ctx)
448    _trace_ctx_end = ABSOLUTE(.);
449
450     . = ALIGN(4);
451    *(.gna_model)
452    __data_end = ABSOLUTE(.);
453    . = ALIGN(4096);
454
455  } >sdram0 :sdram0_phdr
456
457  .lit4 : ALIGN(4)
458  {
459    _lit4_start = ABSOLUTE(.);
460    *(*.lit4)
461    *(.lit4.*)
462    *(.gnu.linkonce.lit4.*)
463    _lit4_end = ABSOLUTE(.);
464  } >sdram0 :sdram0_phdr
465
466
467  #include <zephyr/linker/common-ram.ld>
468/* Located in generated directory. This file is populated by calling
469 * zephyr_linker_sources(ROM_SECTIONS ...). Useful for grouping iterable RO structs.
470 */
471#include <snippets-rom-sections.ld>
472
473  .bss (NOLOAD) : ALIGN(8)
474  {
475    . = ALIGN (8);
476    _bss_start = ABSOLUTE(.);
477    *(.dynsbss)
478    *(.sbss)
479    *(.sbss.*)
480    *(.gnu.linkonce.sb.*)
481    *(.scommon)
482    *(.sbss2)
483    *(.sbss2.*)
484    *(.gnu.linkonce.sb2.*)
485    *(.dynbss)
486    *(.bss)
487    *(.bss.*)
488    *(.gnu.linkonce.b.*)
489    *(COMMON)
490    . = ALIGN (8);
491    _bss_end = ABSOLUTE(.);
492  } >sdram0 :sdram0_phdr
493
494   .heap_mem (NOLOAD) : ALIGN(8)
495  {
496    . = ALIGN (8);
497    _heap_mem_start = ABSOLUTE(.);
498    *(*.heap_mem)
499    _heap_mem_end = ABSOLUTE(.);
500  } >sdram1 :sdram1_phdr
501
502 /* stack */
503  _end = ALIGN (8);
504  PROVIDE(end = ALIGN (8));
505
506  __stack = DRAM0_BASE + DRAM0_SIZE;
507  .comment  0 :  { *(.comment) } /* stack */
508
509   .debug  0 :  { *(.debug) }
510  .line  0 :  { *(.line) }
511  .debug_srcinfo  0 :  { *(.debug_srcinfo) }
512  .debug_sfnames  0 :  { *(.debug_sfnames) }
513  .debug_aranges  0 :  { *(.debug_aranges) }
514  .debug_pubnames  0 :  { *(.debug_pubnames) }
515  .debug_info  0 :  { *(.debug_info) }
516  .debug_abbrev  0 :  { *(.debug_abbrev) }
517  .debug_line  0 :  { *(.debug_line) }
518  .debug_frame  0 :  { *(.debug_frame) }
519  .debug_str  0 :  { *(.debug_str) }
520  .debug_loc  0 :  { *(.debug_loc) }
521  .debug_macinfo  0 :  { *(.debug_macinfo) }
522  .debug_weaknames  0 :  { *(.debug_weaknames) }
523  .debug_funcnames  0 :  { *(.debug_funcnames) }
524  .debug_typenames  0 :  { *(.debug_typenames) }
525  .debug_varnames  0 :  { *(.debug_varnames) }
526  .debug_ranges  0 :  { *(.debug_ranges) }
527  .debug_addr  0 :  { *(.debug_addr) }
528  .debug_line_str  0 :  { *(.debug_line_str) }
529  .debug_loclists  0 :  { *(.debug_loclists) }
530  .debug_macro  0 :  { *(.debug_macro) }
531  .debug_names  0 :  { *(.debug_names) }
532  .debug_rnglists  0 :  { *(.debug_rnglists) }
533  .debug_str_offsets  0 :  { *(.debug_str_offsets) }
534  .debug_sup  0 :  { *(.debug_sup) }
535  .xtensa.info  0 :  { *(.xtensa.info) }
536
537  .xt.insn 0 :
538  {
539    KEEP (*(.xt.insn))
540    KEEP (*(.gnu.linkonce.x.*))
541  }
542  .xt.prop 0 :
543  {
544    KEEP (*(.xt.prop))
545    KEEP (*(.xt.prop.*))
546    KEEP (*(.gnu.linkonce.prop.*))
547  }
548  .xt.lit 0 :
549  {
550    KEEP (*(.xt.lit))
551    KEEP (*(.xt.lit.*))
552    KEEP (*(.gnu.linkonce.p.*))
553  }
554  .xt.profile_range 0 :
555  {
556    KEEP (*(.xt.profile_range))
557    KEEP (*(.gnu.linkonce.profile_range.*))
558  }
559  .xt.profile_ranges 0 :
560  {
561    KEEP (*(.xt.profile_ranges))
562    KEEP (*(.gnu.linkonce.xt.profile_ranges.*))
563  }
564  .xt.profile_files 0 :
565  {
566    KEEP (*(.xt.profile_files))
567    KEEP (*(.gnu.linkonce.xt.profile_files.*))
568  }
569
570#ifdef CONFIG_GEN_ISR_TABLES
571#include <zephyr/linker/intlist.ld>
572#endif
573
574
575 .static_uuid_entries (COPY) : ALIGN(1024)
576  {
577    *(*.static_uuids)
578  } > static_uuid_entries_seg :static_uuid_entries_phdr
579
580  .static_log_entries (COPY) : ALIGN(1024)
581  {
582    *(*.static_log*)
583  } > static_log_entries_seg :static_log_entries_phdr
584
585 .fw_metadata (COPY) : ALIGN(1024)
586  {
587    KEEP (*(.fw_metadata))
588    . = ALIGN(_EXT_MAN_ALIGN_);
589  } >fw_metadata_seg :metadata_entries_phdr
590
591  /DISCARD/ : { *(.note.GNU-stack) }
592}
593