11.5Smatt/* $NetBSD: ldscript,v 1.5 2012/08/06 02:14:16 matt Exp $ */ 21.1Sbsh 31.1SbshOUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", 41.1Sbsh "elf32-littlearm") 51.1SbshOUTPUT_ARCH(arm) 61.1SbshENTRY(FLASH) 71.1SbshMEMORY 81.1Sbsh{ 91.1Sbsh /* We will locate the .text section in flash, and will run directly 101.1Sbsh from there just long enough to relocate our .text and .data into 111.1Sbsh a small chunk of SDRAM starting at (SDRAM + 1M). */ 121.1Sbsh flash : o = 0x00100000, l = 16M - 1M 131.1Sbsh sdram : o = 0x08000000, l = 1M /* kernel loads at 0x08200000 */ 141.1Sbsh} 151.1SbshSECTIONS 161.1Sbsh{ 171.1Sbsh FLASH = 0x100000; 181.1Sbsh 191.5Smatt /DISCARD/ : { *(.ARM.attributes*) *(.ARM.exidx) } 201.5Smatt 211.1Sbsh /* Read-only sections, merged into text segment: */ 221.1Sbsh __text_store = FLASH; 231.1Sbsh .text : 241.1Sbsh AT (FLASH) 251.1Sbsh { 261.1Sbsh *(.text) 271.1Sbsh *(.text.*) 281.1Sbsh *(.stub) 291.1Sbsh *(.glue_7t) *(.glue_7) 301.1Sbsh *(.rodata) *(.rodata.*) 311.1Sbsh } > sdram =0 321.1Sbsh PROVIDE (__etext = .); 331.1Sbsh PROVIDE (_etext = .); 341.1Sbsh PROVIDE (etext = .); 351.1Sbsh __data_store = FLASH + SIZEOF(.text); 361.1Sbsh .data : 371.1Sbsh AT (LOADADDR(.text) + SIZEOF(.text)) 381.1Sbsh { 391.1Sbsh __data_start = . ; 401.1Sbsh *(.data) 411.1Sbsh *(.data.*) 421.1Sbsh } > sdram 431.1Sbsh .sdata : 441.1Sbsh AT (LOADADDR(.data) + SIZEOF(.data)) 451.1Sbsh { 461.1Sbsh *(.sdata) 471.1Sbsh *(.sdata.*) 481.2Sjoff . = ALIGN(32 / 8); 491.1Sbsh } > sdram 501.1Sbsh _edata = .; 511.1Sbsh PROVIDE (edata = .); 521.1Sbsh __bss_start = .; 531.1Sbsh __bss_start__ = .; 541.1Sbsh .sbss : 551.4Sskrll AT (ADDR(.sbss)) 561.1Sbsh { 571.1Sbsh PROVIDE (__sbss_start = .); 581.1Sbsh PROVIDE (___sbss_start = .); 591.1Sbsh *(.dynsbss) 601.1Sbsh *(.sbss) 611.1Sbsh *(.sbss.*) 621.1Sbsh *(.scommon) 631.1Sbsh PROVIDE (__sbss_end = .); 641.1Sbsh PROVIDE (___sbss_end = .); 651.1Sbsh } > sdram 661.1Sbsh .bss : 671.4Sskrll AT (ADDR(.bss)) 681.1Sbsh { 691.1Sbsh *(.dynbss) 701.1Sbsh *(.bss) 711.1Sbsh *(.bss.*) 721.1Sbsh *(COMMON) 731.1Sbsh /* Align here to ensure that the .bss section occupies space up to 741.1Sbsh _end. Align after .bss to ensure correct alignment even if the 751.1Sbsh .bss section disappears because there are no input sections. */ 761.1Sbsh . = ALIGN(32 / 8); 771.1Sbsh } > sdram 781.1Sbsh . = ALIGN(32 / 8); 791.1Sbsh _end = .; 801.1Sbsh _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 811.1Sbsh PROVIDE (end = .); 821.1Sbsh .image (FLASH + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.sdata)) : 831.1Sbsh AT (LOADADDR(.sdata) + SIZEOF(.sdata)) 841.1Sbsh { 851.1Sbsh *(.image) 861.1Sbsh } 871.1Sbsh} 88