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