1/* 2 * Copyright (c) 2016 Cadence Design Systems, Inc. 3 * SPDX-License-Identifier: Apache-2.0 4 */ 5 6/** 7 * @file 8 * @brief Linker command/script file 9 * 10 * Linker script for the Xtensa platform. 11 */ 12 13#include <zephyr/linker/sections.h> 14 15#include <zephyr/devicetree.h> 16#include <zephyr/linker/linker-defs.h> 17#include <zephyr/linker/linker-tool.h> 18 19#define RAMABLE_REGION RAM :sram0_phdr 20#define ROMABLE_REGION srom1_seg :srom1_phdr 21 22MEMORY 23{ 24 dram1_0_seg : org = 0x3FFC0000, len = 0x20000 25 dram0_0_seg : org = 0x3FFE0000, len = 0x20000 26 iram0_0_seg : org = 0x40000000, len = 0x178 27 iram0_1_seg : org = 0x40000178, len = 0x8 28 iram0_2_seg : org = 0x40000180, len = 0x38 29 iram0_3_seg : org = 0x400001B8, len = 0x8 30 iram0_4_seg : org = 0x400001C0, len = 0x38 31 iram0_5_seg : org = 0x400001F8, len = 0x8 32 iram0_6_seg : org = 0x40000200, len = 0x38 33 iram0_7_seg : org = 0x40000238, len = 0x8 34 iram0_8_seg : org = 0x40000240, len = 0x38 35 iram0_9_seg : org = 0x40000278, len = 0x8 36 iram0_10_seg : org = 0x40000280, len = 0x38 37 iram0_11_seg : org = 0x400002B8, len = 0x8 38 iram0_12_seg : org = 0x400002C0, len = 0x38 39 iram0_13_seg : org = 0x400002F8, len = 0x8 40 iram0_14_seg : org = 0x40000300, len = 0x38 41 iram0_15_seg : org = 0x40000338, len = 0x8 42 iram0_16_seg : org = 0x40000340, len = 0x38 43 iram0_17_seg : org = 0x40000378, len = 0x48 44 iram0_18_seg : org = 0x400003C0, len = 0x40 45 iram0_19_seg : org = 0x40000400, len = 0x1FC00 46 srom0_seg : org = 0x50000000, len = 0x300 47 srom1_seg : org = 0x50000300, len = 0xFFFD00 48 RAM : org = 0x60000000, len = 0x4000000 49#ifdef CONFIG_GEN_ISR_TABLES 50 IDT_LIST : org = 0x3ffbe000, len = 0x2000 51#endif 52} 53 54PHDRS 55{ 56 dram1_0_phdr PT_LOAD; 57 dram1_0_bss_phdr PT_LOAD; 58 dram0_0_phdr PT_LOAD; 59 dram0_0_bss_phdr PT_LOAD; 60 iram0_0_phdr PT_LOAD; 61 iram0_1_phdr PT_LOAD; 62 iram0_2_phdr PT_LOAD; 63 iram0_3_phdr PT_LOAD; 64 iram0_4_phdr PT_LOAD; 65 iram0_5_phdr PT_LOAD; 66 iram0_6_phdr PT_LOAD; 67 iram0_7_phdr PT_LOAD; 68 iram0_8_phdr PT_LOAD; 69 iram0_9_phdr PT_LOAD; 70 iram0_10_phdr PT_LOAD; 71 iram0_11_phdr PT_LOAD; 72 iram0_12_phdr PT_LOAD; 73 iram0_13_phdr PT_LOAD; 74 iram0_14_phdr PT_LOAD; 75 iram0_15_phdr PT_LOAD; 76 iram0_16_phdr PT_LOAD; 77 iram0_17_phdr PT_LOAD; 78 iram0_18_phdr PT_LOAD; 79 iram0_19_phdr PT_LOAD; 80 srom0_phdr PT_LOAD; 81 srom1_phdr PT_LOAD; 82 sram0_phdr PT_LOAD; 83 sram0_bss_phdr PT_LOAD; 84} 85 86 87/* Default entry point: */ 88ENTRY(CONFIG_KERNEL_ENTRY) 89 90/* Memory boundary addresses: */ 91_memmap_mem_dram1_start = 0x3ffc0000; 92_memmap_mem_dram1_end = 0x3ffe0000; 93_memmap_mem_dram0_start = 0x3ffe0000; 94_memmap_mem_dram0_end = 0x40000000; 95_memmap_mem_iram0_start = 0x40000000; 96_memmap_mem_iram0_end = 0x40020000; 97_memmap_mem_srom_start = 0x50000000; 98_memmap_mem_srom_end = 0x51000000; 99_memmap_mem_sram_start = 0x60000000; 100_memmap_mem_sram_end = 0x64000000; 101 102/* Memory segment boundary addresses: */ 103_memmap_seg_dram1_0_start = 0x3ffc0000; 104_memmap_seg_dram1_0_max = 0x3ffe0000; 105_memmap_seg_dram0_0_start = 0x3ffe0000; 106_memmap_seg_dram0_0_max = 0x40000000; 107_memmap_seg_iram0_0_start = 0x40000000; 108_memmap_seg_iram0_0_max = 0x40000178; 109_memmap_seg_iram0_1_start = 0x40000178; 110_memmap_seg_iram0_1_max = 0x40000180; 111_memmap_seg_iram0_2_start = 0x40000180; 112_memmap_seg_iram0_2_max = 0x400001b8; 113_memmap_seg_iram0_3_start = 0x400001b8; 114_memmap_seg_iram0_3_max = 0x400001c0; 115_memmap_seg_iram0_4_start = 0x400001c0; 116_memmap_seg_iram0_4_max = 0x400001f8; 117_memmap_seg_iram0_5_start = 0x400001f8; 118_memmap_seg_iram0_5_max = 0x40000200; 119_memmap_seg_iram0_6_start = 0x40000200; 120_memmap_seg_iram0_6_max = 0x40000238; 121_memmap_seg_iram0_7_start = 0x40000238; 122_memmap_seg_iram0_7_max = 0x40000240; 123_memmap_seg_iram0_8_start = 0x40000240; 124_memmap_seg_iram0_8_max = 0x40000278; 125_memmap_seg_iram0_9_start = 0x40000278; 126_memmap_seg_iram0_9_max = 0x40000280; 127_memmap_seg_iram0_10_start = 0x40000280; 128_memmap_seg_iram0_10_max = 0x400002b8; 129_memmap_seg_iram0_11_start = 0x400002b8; 130_memmap_seg_iram0_11_max = 0x400002c0; 131_memmap_seg_iram0_12_start = 0x400002c0; 132_memmap_seg_iram0_12_max = 0x400002f8; 133_memmap_seg_iram0_13_start = 0x400002f8; 134_memmap_seg_iram0_13_max = 0x40000300; 135_memmap_seg_iram0_14_start = 0x40000300; 136_memmap_seg_iram0_14_max = 0x40000338; 137_memmap_seg_iram0_15_start = 0x40000338; 138_memmap_seg_iram0_15_max = 0x40000340; 139_memmap_seg_iram0_16_start = 0x40000340; 140_memmap_seg_iram0_16_max = 0x40000378; 141_memmap_seg_iram0_17_start = 0x40000378; 142_memmap_seg_iram0_17_max = 0x400003c0; 143_memmap_seg_iram0_18_start = 0x400003c0; 144_memmap_seg_iram0_18_max = 0x40000400; 145_memmap_seg_iram0_19_start = 0x40000400; 146_memmap_seg_iram0_19_max = 0x40020000; 147_memmap_seg_srom0_start = 0x50000000; 148_memmap_seg_srom0_max = 0x50000300; 149_memmap_seg_srom1_start = 0x50000300; 150_memmap_seg_srom1_max = 0x51000000; 151_memmap_seg_sram0_start = 0x60000000; 152_memmap_seg_sram0_max = 0x64000000; 153 154_rom_store_table = 0; 155PROVIDE(_memmap_vecbase_reset = 0x40000000); 156PROVIDE(_memmap_reset_vector = 0x50000000); 157/* Various memory-map dependent cache attribute settings: */ 158_memmap_cacheattr_wb_base = 0x00001110; 159_memmap_cacheattr_wt_base = 0x00001110; 160_memmap_cacheattr_bp_base = 0x00002220; 161_memmap_cacheattr_unused_mask = 0xFFFF000F; 162_memmap_cacheattr_wb_trapnull = 0x2222111F; 163_memmap_cacheattr_wba_trapnull = 0x2222111F; 164_memmap_cacheattr_wbna_trapnull = 0x2222111F; 165_memmap_cacheattr_wt_trapnull = 0x2222111F; 166_memmap_cacheattr_bp_trapnull = 0x2222222F; 167_memmap_cacheattr_wb_strict = 0xFFFF111F; 168_memmap_cacheattr_wt_strict = 0xFFFF111F; 169_memmap_cacheattr_bp_strict = 0xFFFF222F; 170_memmap_cacheattr_wb_allvalid = 0x22221112; 171_memmap_cacheattr_wt_allvalid = 0x22221112; 172_memmap_cacheattr_bp_allvalid = 0x22222222; 173PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull); 174 175SECTIONS 176{ 177 178#include <zephyr/linker/rel-sections.ld> 179 180#ifdef CONFIG_GEN_ISR_TABLES 181#include <zephyr/linker/intlist.ld> 182#endif 183 184 .dram1.rodata : ALIGN(4) 185 { 186 _dram1_rodata_start = ABSOLUTE(.); 187 *(.dram1.rodata) 188 _dram1_rodata_end = ABSOLUTE(.); 189 } >dram1_0_seg :dram1_0_phdr 190 191 .dram1.literal : ALIGN(4) 192 { 193 _dram1_literal_start = ABSOLUTE(.); 194 *(.dram1.literal) 195 _dram1_literal_end = ABSOLUTE(.); 196 } >dram1_0_seg :dram1_0_phdr 197 198 .dram1.data : ALIGN(4) 199 { 200 _dram1_data_start = ABSOLUTE(.); 201 *(.dram1.data) 202 _dram1_data_end = ABSOLUTE(.); 203 } >dram1_0_seg :dram1_0_phdr 204 205 .dram1.bss (NOLOAD) : ALIGN(8) 206 { 207 . = ALIGN (8); 208 _dram1_bss_start = ABSOLUTE(.); 209 *(.dram1.bss) 210 . = ALIGN (8); 211 _dram1_bss_end = ABSOLUTE(.); 212 _memmap_seg_dram1_0_end = ALIGN(0x8); 213 } >dram1_0_seg :dram1_0_bss_phdr 214 215 .dram0.rodata : ALIGN(4) 216 { 217 _dram0_rodata_start = ABSOLUTE(.); 218 *(.dram0.rodata) 219 _dram0_rodata_end = ABSOLUTE(.); 220 } >dram0_0_seg :dram0_0_phdr 221 222 .dram0.literal : ALIGN(4) 223 { 224 _dram0_literal_start = ABSOLUTE(.); 225 *(.dram0.literal) 226 _dram0_literal_end = ABSOLUTE(.); 227 } >dram0_0_seg :dram0_0_phdr 228 229 .dram0.data : ALIGN(4) 230 { 231 _dram0_data_start = ABSOLUTE(.); 232 *(.dram0.data) 233 _dram0_data_end = ABSOLUTE(.); 234 } >dram0_0_seg :dram0_0_phdr 235 236 .dram0.bss (NOLOAD) : ALIGN(8) 237 { 238 . = ALIGN (8); 239 _dram0_bss_start = ABSOLUTE(.); 240 *(.dram0.bss) 241 . = ALIGN (8); 242 _dram0_bss_end = ABSOLUTE(.); 243 _memmap_seg_dram0_0_end = ALIGN(0x8); 244 } >dram0_0_seg :dram0_0_bss_phdr 245 246 .WindowVectors.text : ALIGN(4) 247 { 248 _WindowVectors_text_start = ABSOLUTE(.); 249 KEEP (*(.WindowVectors.text)) 250 _WindowVectors_text_end = ABSOLUTE(.); 251 _memmap_seg_iram0_0_end = ALIGN(0x8); 252 } >iram0_0_seg :iram0_0_phdr 253 254 .Level2InterruptVector.literal : ALIGN(4) 255 { 256 _Level2InterruptVector_literal_start = ABSOLUTE(.); 257 *(.Level2InterruptVector.literal) 258 _Level2InterruptVector_literal_end = ABSOLUTE(.); 259 _memmap_seg_iram0_1_end = ALIGN(0x8); 260 } >iram0_1_seg :iram0_1_phdr 261 262 .Level2InterruptVector.text : ALIGN(4) 263 { 264 _Level2InterruptVector_text_start = ABSOLUTE(.); 265 KEEP (*(.Level2InterruptVector.text)) 266 _Level2InterruptVector_text_end = ABSOLUTE(.); 267 _memmap_seg_iram0_2_end = ALIGN(0x8); 268 } >iram0_2_seg :iram0_2_phdr 269 270 .Level3InterruptVector.literal : ALIGN(4) 271 { 272 _Level3InterruptVector_literal_start = ABSOLUTE(.); 273 *(.Level3InterruptVector.literal) 274 _Level3InterruptVector_literal_end = ABSOLUTE(.); 275 _memmap_seg_iram0_3_end = ALIGN(0x8); 276 } >iram0_3_seg :iram0_3_phdr 277 278 .Level3InterruptVector.text : ALIGN(4) 279 { 280 _Level3InterruptVector_text_start = ABSOLUTE(.); 281 KEEP (*(.Level3InterruptVector.text)) 282 _Level3InterruptVector_text_end = ABSOLUTE(.); 283 _memmap_seg_iram0_4_end = ALIGN(0x8); 284 } >iram0_4_seg :iram0_4_phdr 285 286 .Level4InterruptVector.literal : ALIGN(4) 287 { 288 _Level4InterruptVector_literal_start = ABSOLUTE(.); 289 *(.Level4InterruptVector.literal) 290 _Level4InterruptVector_literal_end = ABSOLUTE(.); 291 _memmap_seg_iram0_5_end = ALIGN(0x8); 292 } >iram0_5_seg :iram0_5_phdr 293 294 .Level4InterruptVector.text : ALIGN(4) 295 { 296 _Level4InterruptVector_text_start = ABSOLUTE(.); 297 KEEP (*(.Level4InterruptVector.text)) 298 _Level4InterruptVector_text_end = ABSOLUTE(.); 299 _memmap_seg_iram0_6_end = ALIGN(0x8); 300 } >iram0_6_seg :iram0_6_phdr 301 302 .Level5InterruptVector.literal : ALIGN(4) 303 { 304 _Level5InterruptVector_literal_start = ABSOLUTE(.); 305 *(.Level5InterruptVector.literal) 306 _Level5InterruptVector_literal_end = ABSOLUTE(.); 307 _memmap_seg_iram0_7_end = ALIGN(0x8); 308 } >iram0_7_seg :iram0_7_phdr 309 310 .Level5InterruptVector.text : ALIGN(4) 311 { 312 _Level5InterruptVector_text_start = ABSOLUTE(.); 313 KEEP (*(.Level5InterruptVector.text)) 314 _Level5InterruptVector_text_end = ABSOLUTE(.); 315 _memmap_seg_iram0_8_end = ALIGN(0x8); 316 } >iram0_8_seg :iram0_8_phdr 317 318 .DebugExceptionVector.literal : ALIGN(4) 319 { 320 _DebugExceptionVector_literal_start = ABSOLUTE(.); 321 *(.DebugExceptionVector.literal) 322 _DebugExceptionVector_literal_end = ABSOLUTE(.); 323 _memmap_seg_iram0_9_end = ALIGN(0x8); 324 } >iram0_9_seg :iram0_9_phdr 325 326 .DebugExceptionVector.text : ALIGN(4) 327 { 328 _DebugExceptionVector_text_start = ABSOLUTE(.); 329 KEEP (*(.DebugExceptionVector.text)) 330 _DebugExceptionVector_text_end = ABSOLUTE(.); 331 _memmap_seg_iram0_10_end = ALIGN(0x8); 332 } >iram0_10_seg :iram0_10_phdr 333 334 .NMIExceptionVector.literal : ALIGN(4) 335 { 336 _NMIExceptionVector_literal_start = ABSOLUTE(.); 337 *(.NMIExceptionVector.literal) 338 _NMIExceptionVector_literal_end = ABSOLUTE(.); 339 _memmap_seg_iram0_11_end = ALIGN(0x8); 340 } >iram0_11_seg :iram0_11_phdr 341 342 .NMIExceptionVector.text : ALIGN(4) 343 { 344 _NMIExceptionVector_text_start = ABSOLUTE(.); 345 KEEP (*(.NMIExceptionVector.text)) 346 _NMIExceptionVector_text_end = ABSOLUTE(.); 347 _memmap_seg_iram0_12_end = ALIGN(0x8); 348 } >iram0_12_seg :iram0_12_phdr 349 350 .KernelExceptionVector.literal : ALIGN(4) 351 { 352 _KernelExceptionVector_literal_start = ABSOLUTE(.); 353 *(.KernelExceptionVector.literal) 354 _KernelExceptionVector_literal_end = ABSOLUTE(.); 355 _memmap_seg_iram0_13_end = ALIGN(0x8); 356 } >iram0_13_seg :iram0_13_phdr 357 358 .KernelExceptionVector.text : ALIGN(4) 359 { 360 _KernelExceptionVector_text_start = ABSOLUTE(.); 361 KEEP (*(.KernelExceptionVector.text)) 362 _KernelExceptionVector_text_end = ABSOLUTE(.); 363 _memmap_seg_iram0_14_end = ALIGN(0x8); 364 } >iram0_14_seg :iram0_14_phdr 365 366 .UserExceptionVector.literal : ALIGN(4) 367 { 368 _UserExceptionVector_literal_start = ABSOLUTE(.); 369 *(.UserExceptionVector.literal) 370 _UserExceptionVector_literal_end = ABSOLUTE(.); 371 _memmap_seg_iram0_15_end = ALIGN(0x8); 372 } >iram0_15_seg :iram0_15_phdr 373 374 .UserExceptionVector.text : ALIGN(4) 375 { 376 _UserExceptionVector_text_start = ABSOLUTE(.); 377 KEEP (*(.UserExceptionVector.text)) 378 _UserExceptionVector_text_end = ABSOLUTE(.); 379 _memmap_seg_iram0_16_end = ALIGN(0x8); 380 } >iram0_16_seg :iram0_16_phdr 381 382 .DoubleExceptionVector.literal : ALIGN(4) 383 { 384 _DoubleExceptionVector_literal_start = ABSOLUTE(.); 385 *(.DoubleExceptionVector.literal) 386 _DoubleExceptionVector_literal_end = ABSOLUTE(.); 387 _memmap_seg_iram0_17_end = ALIGN(0x8); 388 } >iram0_17_seg :iram0_17_phdr 389 390 .DoubleExceptionVector.text : ALIGN(4) 391 { 392 _DoubleExceptionVector_text_start = ABSOLUTE(.); 393 KEEP (*(.DoubleExceptionVector.text)) 394 _DoubleExceptionVector_text_end = ABSOLUTE(.); 395 _memmap_seg_iram0_18_end = ALIGN(0x8); 396 } >iram0_18_seg :iram0_18_phdr 397 398 .iram0.text : ALIGN(4) 399 { 400 _iram0_text_start = ABSOLUTE(.); 401 *(.iram0.literal .iram.literal .iram.text.literal .iram0.text .iram.text) 402 _iram0_text_end = ABSOLUTE(.); 403 _memmap_seg_iram0_19_end = ALIGN(0x8); 404 } >iram0_19_seg :iram0_19_phdr 405 406 .ResetVector.text : ALIGN(4) 407 { 408 __rom_region_start = ABSOLUTE(.); 409 _ResetVector_text_start = ABSOLUTE(.); 410 KEEP (*(.ResetVector.text)) 411 _ResetVector_text_end = ABSOLUTE(.); 412 _memmap_seg_srom0_end = ALIGN(0x8); 413 } >srom0_seg :srom0_phdr 414 415#ifdef CONFIG_CODE_DATA_RELOCATION 416#include <linker_relocate.ld> 417#endif 418 419 .srom.rodata : ALIGN(4) 420 { 421 _srom_rodata_start = ABSOLUTE(.); 422 *(.srom.rodata) 423 _srom_rodata_end = ABSOLUTE(.); 424 } >srom1_seg :srom1_phdr 425 426 .srom.text : ALIGN(4) 427 { 428 _srom_text_start = ABSOLUTE(.); 429 *(.srom.literal .srom.text) 430 _srom_text_end = ABSOLUTE(.); 431 _memmap_seg_srom1_end = ALIGN(0x8); 432 __rom_region_end = ABSOLUTE(.); 433 } >srom1_seg :srom1_phdr 434 435 .sram.rodata : ALIGN(4) 436 { 437 _image_ram_start = ABSOLUTE(.); 438 _sram_rodata_start = ABSOLUTE(.); 439 *(.sram.rodata) 440 _sram_rodata_end = ABSOLUTE(.); 441 } >RAM :sram0_phdr 442 443#include <zephyr/linker/common-rom.ld> 444 445 .rodata : ALIGN(4) 446 { 447 __rodata_region_start = ABSOLUTE(.); 448 *(.rodata) 449 *(.rodata.*) 450 *(.gnu.linkonce.r.*) 451 *(.rodata1) 452 453 . = ALIGN(4); 454 #include <snippets-rodata.ld> 455 . = ALIGN(4); 456 457 __XT_EXCEPTION_TABLE__ = ABSOLUTE(.); 458 KEEP (*(.xt_except_table)) 459 KEEP (*(.gcc_except_table .gcc_except_table.*)) 460 *(.gnu.linkonce.e.*) 461 *(.gnu.version_r) 462 KEEP (*(.eh_frame)) 463 /* C++ constructor and destructor tables, properly ordered: */ 464 KEEP (*crtbegin.o(.ctors)) 465 KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) 466 KEEP (*(SORT(.ctors.*))) 467 KEEP (*(.ctors)) 468 KEEP (*crtbegin.o(.dtors)) 469 KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) 470 KEEP (*(SORT(.dtors.*))) 471 KEEP (*(.dtors)) 472 /* C++ exception handlers table: */ 473 __XT_EXCEPTION_DESCS__ = ABSOLUTE(.); 474 *(.xt_except_desc) 475 *(.gnu.linkonce.h.*) 476 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.); 477 *(.xt_except_desc_end) 478 *(.dynamic) 479 *(.gnu.version_d) 480 . = ALIGN(4); /* this table MUST be 4-byte aligned */ 481 _bss_table_start = ABSOLUTE(.); 482 LONG(_dram1_bss_start) 483 LONG(_dram1_bss_end) 484 LONG(_dram0_bss_start) 485 LONG(_dram0_bss_end) 486 LONG(_bss_start) 487 LONG(_bss_end) 488 _bss_table_end = ABSOLUTE(.); 489 __rodata_region_end = ABSOLUTE(.); 490 } >RAM :sram0_phdr 491 492 .sram.text : ALIGN(4) 493 { 494 _sram_text_start = ABSOLUTE(.); 495 *(.sram.literal .sram.text) 496 _sram_text_end = ABSOLUTE(.); 497 } >RAM :sram0_phdr 498 499 __text_region_start = ALIGN(4); 500 .text : ALIGN(4) 501 { 502 _stext = .; 503 _text_start = ABSOLUTE(.); 504 *(.entry.text) 505 *(.init.literal) 506 KEEP(*(.init)) 507 *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) 508 *(.fini.literal) 509 KEEP(*(.fini)) 510 *(.gnu.version) 511 _text_end = ABSOLUTE(.); 512 _etext = .; 513 } >RAM :sram0_phdr 514 __text_region_end = .; 515 516 .sram.data : ALIGN(4) 517 { 518 _sram_data_start = ABSOLUTE(.); 519 *(.sram.data) 520 _sram_data_end = ABSOLUTE(.); 521 } >RAM :sram0_phdr 522 523 .noinit : ALIGN(4) 524 { 525 *(.noinit) 526 *(.noinit.*) 527 } >RAM :sram0_phdr 528 529#include <snippets-sections.ld> 530 531 .data : ALIGN(4) 532 { 533 __data_start = ABSOLUTE(.); 534 *(.data) 535 *(.data.*) 536 *(.gnu.linkonce.d.*) 537 KEEP(*(.gnu.linkonce.d.*personality*)) 538 *(.data1) 539 *(.sdata) 540 *(.sdata.*) 541 *(.gnu.linkonce.s.*) 542 *(.sdata2) 543 *(.sdata2.*) 544 *(.gnu.linkonce.s2.*) 545 KEEP(*(.jcr)) 546 547 . = ALIGN(4); 548 #include <snippets-rwdata.ld> 549 . = ALIGN(4); 550 551#ifdef CONFIG_CODE_DATA_RELOCATION 552#include <linker_sram_data_relocate.ld> 553#endif 554 . = ALIGN(4); 555 556 __data_end = ABSOLUTE(.); 557 } >RAM :sram0_phdr 558 559#include <snippets-data-sections.ld> 560 561#include <zephyr/linker/common-ram.ld> 562 563 .tm_clone_table : 564 { 565 *(.tm_clone_table) 566 } >RAM :sram0_phdr 567 568#include <snippets-ram-sections.ld> 569 570 .bss (NOLOAD) : ALIGN(8) 571 { 572 . = ALIGN (8); 573 _bss_start = ABSOLUTE(.); 574 *(.dynsbss) 575 *(.sbss) 576 *(.sbss.*) 577 *(.gnu.linkonce.sb.*) 578 *(.scommon) 579 *(.sbss2) 580 *(.sbss2.*) 581 *(.gnu.linkonce.sb2.*) 582 *(.dynbss) 583 *(.bss) 584 *(.bss.*) 585 *(.gnu.linkonce.b.*) 586 *(COMMON) 587 *(.sram.bss) 588#ifdef CONFIG_CODE_DATA_RELOCATION 589#include <linker_sram_bss_relocate.ld> 590#endif 591 . = ALIGN (8); 592 _bss_end = ABSOLUTE(.); 593 _end = ALIGN(0x8); 594 _image_ram_end = ABSOLUTE(.); 595 PROVIDE(end = ALIGN(0x8)); 596 _stack_sentry = ALIGN(0x8); 597 _memmap_seg_sram0_end = ALIGN(0x8); 598 } >RAM :sram0_bss_phdr 599 __stack = 0x64000000; 600 _heap_sentry = 0x64000000; 601 .comment 0 : { *(.comment) } 602 .debug 0 : { *(.debug) } 603 .line 0 : { *(.line) } 604 .debug_srcinfo 0 : { *(.debug_srcinfo) } 605 .debug_sfnames 0 : { *(.debug_sfnames) } 606 .debug_aranges 0 : { *(.debug_aranges) } 607 .debug_pubnames 0 : { *(.debug_pubnames) } 608 .debug_info 0 : { *(.debug_info) } 609 .debug_abbrev 0 : { *(.debug_abbrev) } 610 .debug_line 0 : { *(.debug_line) } 611 .debug_frame 0 : { *(.debug_frame) } 612 .debug_str 0 : { *(.debug_str) } 613 .debug_loc 0 : { *(.debug_loc) } 614 .debug_macinfo 0 : { *(.debug_macinfo) } 615 .debug_weaknames 0 : { *(.debug_weaknames) } 616 .debug_funcnames 0 : { *(.debug_funcnames) } 617 .debug_typenames 0 : { *(.debug_typenames) } 618 .debug_varnames 0 : { *(.debug_varnames) } 619 .debug_ranges 0 : { *(.debug_ranges) } 620 .xtensa.info 0 : { *(.xtensa.info) } 621 .xt.insn 0 : 622 { 623 KEEP (*(.xt.insn)) 624 KEEP (*(.gnu.linkonce.x.*)) 625 } 626 .xt.prop 0 : 627 { 628 KEEP (*(.xt.prop)) 629 KEEP (*(.xt.prop.*)) 630 KEEP (*(.gnu.linkonce.prop.*)) 631 } 632 .xt.lit 0 : 633 { 634 KEEP (*(.xt.lit)) 635 KEEP (*(.xt.lit.*)) 636 KEEP (*(.gnu.linkonce.p.*)) 637 } 638 .debug.xt.callgraph 0 : 639 { 640 KEEP (*(.debug.xt.callgraph .debug.xt.callgraph.* .gnu.linkonce.xt.callgraph.*)) 641 } 642} 643