1 1.9 skrll /* $NetBSD: kern.ldscript,v 1.9 2026/03/18 10:02:29 skrll Exp $ */ 2 1.8 skrll 3 1.8 skrll #include "assym.h" 4 1.7 skrll 5 1.1 matt OUTPUT_ARCH(riscv) 6 1.6 maxv ENTRY(start) 7 1.6 maxv 8 1.6 maxv __PAGE_SIZE = 0x1000 ; 9 1.6 maxv __LARGE_PAGE_SIZE = 0x200000 ; 10 1.6 maxv 11 1.1 matt SECTIONS 12 1.1 matt { 13 1.8 skrll 14 1.8 skrll .text : AT (KERNEL_PHYS) 15 1.6 maxv { 16 1.8 skrll PROVIDE(__kernel_text = .); 17 1.9 skrll PROVIDE(kernel_text = .); 18 1.6 maxv *(.text) 19 1.6 maxv *(.text.*) 20 1.6 maxv *(.stub) 21 1.6 maxv } 22 1.6 maxv _etext = . ; 23 1.6 maxv PROVIDE (etext = .); 24 1.6 maxv 25 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 26 1.6 maxv 27 1.8 skrll PROVIDE(__rodata_start = .); 28 1.6 maxv .rodata : 29 1.6 maxv { 30 1.6 maxv *(.rodata) 31 1.6 maxv *(.rodata.*) 32 1.6 maxv *(.srodata) 33 1.6 maxv *(.srodata.*) 34 1.6 maxv } 35 1.6 maxv 36 1.8 skrll PROVIDE(_etext = .); 37 1.8 skrll PROVIDE(etext = .); 38 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 39 1.6 maxv 40 1.6 maxv .data : 41 1.6 maxv { 42 1.8 skrll PROVIDE(__data_start = .); 43 1.6 maxv *(.data) 44 1.8 skrll } 45 1.8 skrll 46 1.8 skrll . = ALIGN(COHERENCY_UNIT); 47 1.8 skrll .data.cacheline_aligned : 48 1.8 skrll { 49 1.8 skrll *(.data.cacheline_aligned) 50 1.8 skrll } 51 1.8 skrll . = ALIGN(COHERENCY_UNIT); 52 1.8 skrll .data.read_mostly : 53 1.8 skrll { 54 1.8 skrll *(.data.read_mostly) 55 1.8 skrll } 56 1.8 skrll . = ALIGN(COHERENCY_UNIT); 57 1.8 skrll 58 1.8 skrll .sdata : 59 1.8 skrll { 60 1.8 skrll __global_pointer$ = . + 0x800; 61 1.6 maxv *(.sdata) 62 1.6 maxv *(.sdata.*) 63 1.6 maxv } 64 1.8 skrll _edata = .; 65 1.8 skrll PROVIDE (edata = .); 66 1.6 maxv 67 1.6 maxv __bss_start = .; 68 1.6 maxv .bss : 69 1.6 maxv { 70 1.6 maxv *(.bss) 71 1.6 maxv *(.bss.*) 72 1.6 maxv *(.sbss) 73 1.6 maxv *(.sbss.*) 74 1.6 maxv *(COMMON) 75 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 76 1.6 maxv } 77 1.8 skrll _bss_end__ = . ; 78 1.8 skrll __bss_end__ = . ; 79 1.6 maxv . = ALIGN(__PAGE_SIZE); 80 1.6 maxv 81 1.8 skrll __end__ = . ; 82 1.8 skrll _end = .; 83 1.8 skrll PROVIDE(end = .); 84 1.6 maxv .note.netbsd.ident : 85 1.6 maxv { 86 1.6 maxv KEEP(*(.note.netbsd.ident)); 87 1.6 maxv } 88 1.1 matt } 89