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