1 1.1 christos /* $NetBSD: kern.ldscript,v 1.1 2021/08/30 18:59:57 christos Exp $ */ 2 1.1 christos 3 1.1 christos #include "assym.h" 4 1.1 christos 5 1.1 christos __PAGE_SIZE = 0x1000 ; 6 1.1 christos 7 1.1 christos ENTRY(_start) 8 1.1 christos SECTIONS 9 1.1 christos { 10 1.1 christos .text : AT (ADDR(.text) & 0x0fffffff) 11 1.1 christos { 12 1.1 christos KEEP(*(.text._start)); 13 1.1 christos . = ALIGN(__PAGE_SIZE); 14 1.1 christos __text_user_start = . ; 15 1.1 christos *(.text.user) 16 1.1 christos . = ALIGN(__PAGE_SIZE); 17 1.1 christos __text_user_end = . ; 18 1.1 christos 19 1.1 christos *(.text) 20 1.1 christos *(.text.*) 21 1.1 christos *(.stub) 22 1.1 christos . = ALIGN(__PAGE_SIZE); 23 1.1 christos } =0xCC 24 1.1 christos _etext = . ; 25 1.1 christos PROVIDE (etext = .) ; 26 1.1 christos 27 1.1 christos /* 28 1.1 christos * Push the rodata segment up to the next large page boundary so that we 29 1.1 christos * can map the text segment with large pages. 30 1.1 christos */ 31 1.1 christos . = ALIGN(__PAGE_SIZE); 32 1.1 christos 33 1.1 christos __rodata_start = . ; 34 1.1 christos 35 1.1 christos .rodata : 36 1.1 christos { 37 1.1 christos *(.rodata) 38 1.1 christos *(.rodata.*) 39 1.1 christos . = ALIGN(COHERENCY_UNIT); 40 1.1 christos __CTOR_LIST__ = .; 41 1.1 christos *(.ctors) 42 1.1 christos __CTOR_END__ = .; 43 1.1 christos } 44 1.1 christos 45 1.1 christos . = ALIGN(__PAGE_SIZE); 46 1.1 christos 47 1.1 christos __data_start = . ; 48 1.1 christos .data : 49 1.1 christos { 50 1.1 christos *(.data) 51 1.1 christos } 52 1.1 christos 53 1.1 christos . = ALIGN(COHERENCY_UNIT); 54 1.1 christos .data.cacheline_aligned : 55 1.1 christos { 56 1.1 christos *(.data.cacheline_aligned) 57 1.1 christos } 58 1.1 christos . = ALIGN(COHERENCY_UNIT); 59 1.1 christos .data.read_mostly : 60 1.1 christos { 61 1.1 christos *(.data.read_mostly) 62 1.1 christos } 63 1.1 christos . = ALIGN(COHERENCY_UNIT); 64 1.1 christos 65 1.1 christos _edata = . ; 66 1.1 christos PROVIDE (edata = .) ; 67 1.1 christos __bss_start = . ; 68 1.1 christos .bss : 69 1.1 christos { 70 1.1 christos *(.bss) 71 1.1 christos *(.bss.*) 72 1.1 christos *(COMMON) 73 1.1 christos . = ALIGN(__PAGE_SIZE); 74 1.1 christos } 75 1.1 christos 76 1.1 christos . = ALIGN(__PAGE_SIZE); 77 1.1 christos 78 1.1 christos /* End of the kernel image */ 79 1.1 christos __kernel_end = . ; 80 1.1 christos 81 1.1 christos _end = . ; 82 1.1 christos PROVIDE (end = .) ; 83 1.1 christos .note.netbsd.ident : 84 1.1 christos { 85 1.1 christos KEEP(*(.note.netbsd.ident)); 86 1.1 christos } 87 1.1 christos } 88 1.1 christos 89