kern.ldscript revision 1.5
11.5Suebayasi/* $NetBSD: kern.ldscript,v 1.5 2015/08/20 06:48:25 uebayasi Exp $ */ 21.1Sthorpej 31.2SthorpejOUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", 41.2Sthorpej "elf32-littlearm") 51.1SthorpejOUTPUT_ARCH(arm) 61.1SthorpejENTRY(KERNEL_BASE_phys) 71.1SthorpejSECTIONS 81.1Sthorpej{ 91.1Sthorpej KERNEL_BASE_phys = 0x0000c000; 101.1Sthorpej KERNEL_BASE_virt = 0xf000c000; 111.1Sthorpej 121.1Sthorpej /* Kernel start: */ 131.1Sthorpej .start (KERNEL_BASE_phys) : 141.1Sthorpej { 151.1Sthorpej *(.start) 161.1Sthorpej } =0 171.1Sthorpej 181.1Sthorpej /* Read-only sections, merged into text segment: */ 191.1Sthorpej .text (KERNEL_BASE_virt + SIZEOF(.start)) : 201.1Sthorpej AT (LOADADDR(.start) + SIZEOF(.start)) 211.1Sthorpej { 221.1Sthorpej *(.text) 231.1Sthorpej *(.text.*) 241.1Sthorpej *(.stub) 251.1Sthorpej *(.glue_7t) *(.glue_7) 261.1Sthorpej *(.rodata) *(.rodata.*) 271.1Sthorpej } =0 281.4Smatt .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } 291.4Smatt PROVIDE (__exidx_start = .); 301.4Smatt .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } 311.4Smatt PROVIDE (__exidx_end = .); 321.1Sthorpej PROVIDE (__etext = .); 331.1Sthorpej PROVIDE (_etext = .); 341.1Sthorpej PROVIDE (etext = .); 351.1Sthorpej /* Adjust the address for the data segment to start on the next page 361.1Sthorpej boundary. */ 371.1Sthorpej . = ALIGN(0x8000); 381.1Sthorpej .data : 391.3Suwe AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text))) 401.1Sthorpej { 411.1Sthorpej __data_start = . ; 421.1Sthorpej *(.data) 431.1Sthorpej *(.data.*) 441.1Sthorpej } 451.3Suwe .sdata : 461.3Suwe AT (LOADADDR(.data) + (ADDR(.sdata) - ADDR(.data))) 471.1Sthorpej { 481.5Suebayasi *(.sdata) 491.1Sthorpej *(.sdata.*) 501.1Sthorpej } 511.1Sthorpej _edata = .; 521.1Sthorpej PROVIDE (edata = .); 531.1Sthorpej __bss_start = .; 541.1Sthorpej __bss_start__ = .; 551.1Sthorpej .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 } 661.1Sthorpej .bss : 671.1Sthorpej { 681.1Sthorpej *(.dynbss) 691.1Sthorpej *(.bss) 701.1Sthorpej *(.bss.*) 711.1Sthorpej *(COMMON) 721.1Sthorpej /* Align here to ensure that the .bss section occupies space up to 731.1Sthorpej _end. Align after .bss to ensure correct alignment even if the 741.1Sthorpej .bss section disappears because there are no input sections. */ 751.1Sthorpej . = ALIGN(32 / 8); 761.1Sthorpej } 771.1Sthorpej . = ALIGN(32 / 8); 781.1Sthorpej _end = .; 791.1Sthorpej _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 801.1Sthorpej PROVIDE (end = .); 811.1Sthorpej} 82