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