1 1.5 uebayasi /* $NetBSD: kern.ldscript,v 1.6 2015/08/20 07:00:49 uebayasi Exp $ */ 2 1.1 thorpej 3 1.2 thorpej OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", 4 1.2 thorpej "elf32-littlearm") 5 1.1 thorpej OUTPUT_ARCH(arm) 6 1.1 thorpej ENTRY(KERNEL_BASE_phys) 7 1.1 thorpej SECTIONS 8 1.1 thorpej { 9 1.1 thorpej KERNEL_BASE_phys = 0x0000c000; 10 1.1 thorpej KERNEL_BASE_virt = 0xf000c000; 11 1.1 thorpej 12 1.1 thorpej /* Kernel start: */ 13 1.1 thorpej .start (KERNEL_BASE_phys) : 14 1.1 thorpej { 15 1.1 thorpej *(.start) 16 1.1 thorpej } =0 17 1.1 thorpej 18 1.1 thorpej /* Read-only sections, merged into text segment: */ 19 1.1 thorpej .text (KERNEL_BASE_virt + SIZEOF(.start)) : 20 1.1 thorpej AT (LOADADDR(.start) + SIZEOF(.start)) 21 1.1 thorpej { 22 1.1 thorpej *(.text) 23 1.1 thorpej *(.text.*) 24 1.1 thorpej *(.stub) 25 1.1 thorpej *(.glue_7t) *(.glue_7) 26 1.1 thorpej *(.rodata) *(.rodata.*) 27 1.1 thorpej } =0 28 1.4 matt .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } 29 1.4 matt PROVIDE (__exidx_start = .); 30 1.4 matt .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } 31 1.4 matt PROVIDE (__exidx_end = .); 32 1.1 thorpej PROVIDE (__etext = .); 33 1.1 thorpej PROVIDE (_etext = .); 34 1.1 thorpej PROVIDE (etext = .); 35 1.1 thorpej /* Adjust the address for the data segment to start on the next page 36 1.1 thorpej boundary. */ 37 1.1 thorpej . = ALIGN(0x8000); 38 1.1 thorpej .data : 39 1.3 uwe AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text))) 40 1.1 thorpej { 41 1.1 thorpej __data_start = . ; 42 1.1 thorpej *(.data) 43 1.1 thorpej *(.data.*) 44 1.1 thorpej } 45 1.3 uwe .sdata : 46 1.3 uwe AT (LOADADDR(.data) + (ADDR(.sdata) - ADDR(.data))) 47 1.1 thorpej { 48 1.5 uebayasi *(.sdata) 49 1.1 thorpej *(.sdata.*) 50 1.1 thorpej } 51 1.1 thorpej _edata = .; 52 1.1 thorpej PROVIDE (edata = .); 53 1.1 thorpej __bss_start = .; 54 1.1 thorpej __bss_start__ = .; 55 1.1 thorpej .sbss : 56 1.1 thorpej { 57 1.1 thorpej PROVIDE (__sbss_start = .); 58 1.1 thorpej PROVIDE (___sbss_start = .); 59 1.1 thorpej *(.dynsbss) 60 1.1 thorpej *(.sbss) 61 1.1 thorpej *(.sbss.*) 62 1.1 thorpej *(.scommon) 63 1.1 thorpej PROVIDE (__sbss_end = .); 64 1.1 thorpej PROVIDE (___sbss_end = .); 65 1.1 thorpej } 66 1.1 thorpej .bss : 67 1.1 thorpej { 68 1.6 uebayasi *(.dynbss) 69 1.6 uebayasi *(.bss) 70 1.6 uebayasi *(.bss.*) 71 1.6 uebayasi *(COMMON) 72 1.6 uebayasi /* Align here to ensure that the .bss section occupies space up to 73 1.6 uebayasi _end. Align after .bss to ensure correct alignment even if the 74 1.6 uebayasi .bss section disappears because there are no input sections. */ 75 1.6 uebayasi . = ALIGN(32 / 8); 76 1.1 thorpej } 77 1.1 thorpej . = ALIGN(32 / 8); 78 1.1 thorpej _end = .; 79 1.1 thorpej _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 80 1.1 thorpej PROVIDE (end = .); 81 1.1 thorpej } 82