1 1.13 skrll /* $NetBSD: ldscript.evbarm,v 1.13 2016/02/08 21:08:03 skrll Exp $ */ 2 1.1 bsh 3 1.1 bsh ENTRY(KERNEL_BASE_phys) 4 1.1 bsh SECTIONS 5 1.1 bsh { 6 1.1 bsh /* Kernel start: */ 7 1.10 uebayasi .start : 8 1.1 bsh { 9 1.1 bsh *(.start) 10 1.10 uebayasi } 11 1.1 bsh 12 1.1 bsh /* Read-only sections, merged into text segment: */ 13 1.10 uebayasi .text : 14 1.1 bsh { 15 1.1 bsh *(.text) 16 1.1 bsh *(.text.*) 17 1.1 bsh *(.stub) 18 1.1 bsh *(.glue_7t) *(.glue_7) 19 1.1 bsh *(.rodata) *(.rodata.*) 20 1.10 uebayasi } 21 1.1 bsh PROVIDE (__etext = .); 22 1.1 bsh PROVIDE (_etext = .); 23 1.1 bsh PROVIDE (etext = .); 24 1.4 matt /* Adjust the address for the data segment to start on the next large page 25 1.1 bsh boundary. */ 26 1.4 matt . = ALIGN(0x10000); 27 1.1 bsh .data : 28 1.1 bsh { 29 1.1 bsh __data_start = . ; 30 1.1 bsh *(.data) 31 1.1 bsh *(.data.*) 32 1.1 bsh } 33 1.6 jakllsch .sdata : 34 1.1 bsh { 35 1.6 jakllsch *(.sdata) 36 1.1 bsh *(.sdata.*) 37 1.1 bsh } 38 1.7 matt . = ALIGN(8); 39 1.1 bsh _edata = .; 40 1.1 bsh PROVIDE (edata = .); 41 1.1 bsh __bss_start = .; 42 1.1 bsh __bss_start__ = .; 43 1.1 bsh .sbss : 44 1.1 bsh { 45 1.1 bsh PROVIDE (__sbss_start = .); 46 1.1 bsh PROVIDE (___sbss_start = .); 47 1.1 bsh *(.dynsbss) 48 1.1 bsh *(.sbss) 49 1.1 bsh *(.sbss.*) 50 1.1 bsh *(.scommon) 51 1.1 bsh PROVIDE (__sbss_end = .); 52 1.1 bsh PROVIDE (___sbss_end = .); 53 1.1 bsh } 54 1.1 bsh .bss : 55 1.1 bsh { 56 1.9 uebayasi *(.dynbss) 57 1.9 uebayasi *(.bss) 58 1.9 uebayasi *(.bss.*) 59 1.9 uebayasi *(COMMON) 60 1.9 uebayasi /* Align here to ensure that the .bss section occupies space up to 61 1.9 uebayasi _end. Align after .bss to ensure correct alignment even if the 62 1.9 uebayasi .bss section disappears because there are no input sections. */ 63 1.9 uebayasi . = ALIGN(32 / 8); 64 1.1 bsh } 65 1.1 bsh . = ALIGN(32 / 8); 66 1.1 bsh _end = .; 67 1.1 bsh _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 68 1.1 bsh PROVIDE (end = .); 69 1.1 bsh } 70 1.10 uebayasi SECTIONS 71 1.10 uebayasi { 72 1.10 uebayasi KERNEL_BASE_phys = @KERNEL_BASE_PHYS@; 73 1.10 uebayasi KERNEL_BASE_virt = @KERNEL_BASE_VIRT@; 74 1.10 uebayasi 75 1.10 uebayasi .start (KERNEL_BASE_phys) : 76 1.10 uebayasi { 77 1.10 uebayasi *(.start) 78 1.10 uebayasi } =0 79 1.10 uebayasi 80 1.13 skrll .text (KERNEL_BASE_virt + ALIGN(SIZEOF(.start), ALIGNOF(.text))) : 81 1.13 skrll AT (LOADADDR(.start) + ALIGN(SIZEOF(.start), ALIGNOF(.text))) 82 1.10 uebayasi { 83 1.10 uebayasi *(.text) 84 1.10 uebayasi } =0 85 1.10 uebayasi } 86