1 1.8 skrll /* $NetBSD: kern.ldscript,v 1.8 2021/05/01 07:13:21 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.6 maxv *(.text) 18 1.6 maxv *(.text.*) 19 1.6 maxv *(.stub) 20 1.6 maxv } 21 1.6 maxv _etext = . ; 22 1.6 maxv PROVIDE (etext = .); 23 1.6 maxv 24 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 25 1.6 maxv 26 1.8 skrll PROVIDE(__rodata_start = .); 27 1.6 maxv .rodata : 28 1.6 maxv { 29 1.6 maxv *(.rodata) 30 1.6 maxv *(.rodata.*) 31 1.6 maxv *(.srodata) 32 1.6 maxv *(.srodata.*) 33 1.6 maxv } 34 1.6 maxv 35 1.8 skrll PROVIDE(_etext = .); 36 1.8 skrll PROVIDE(etext = .); 37 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 38 1.6 maxv 39 1.6 maxv .data : 40 1.6 maxv { 41 1.8 skrll PROVIDE(__data_start = .); 42 1.6 maxv *(.data) 43 1.8 skrll } 44 1.8 skrll 45 1.8 skrll . = ALIGN(COHERENCY_UNIT); 46 1.8 skrll .data.cacheline_aligned : 47 1.8 skrll { 48 1.8 skrll *(.data.cacheline_aligned) 49 1.8 skrll } 50 1.8 skrll . = ALIGN(COHERENCY_UNIT); 51 1.8 skrll .data.read_mostly : 52 1.8 skrll { 53 1.8 skrll *(.data.read_mostly) 54 1.8 skrll } 55 1.8 skrll . = ALIGN(COHERENCY_UNIT); 56 1.8 skrll 57 1.8 skrll .sdata : 58 1.8 skrll { 59 1.8 skrll __global_pointer$ = . + 0x800; 60 1.6 maxv *(.sdata) 61 1.6 maxv *(.sdata.*) 62 1.6 maxv } 63 1.8 skrll _edata = .; 64 1.8 skrll PROVIDE (edata = .); 65 1.6 maxv 66 1.6 maxv __bss_start = .; 67 1.6 maxv .bss : 68 1.6 maxv { 69 1.6 maxv *(.bss) 70 1.6 maxv *(.bss.*) 71 1.6 maxv *(.sbss) 72 1.6 maxv *(.sbss.*) 73 1.6 maxv *(COMMON) 74 1.6 maxv . = ALIGN(__LARGE_PAGE_SIZE); 75 1.6 maxv } 76 1.8 skrll _bss_end__ = . ; 77 1.8 skrll __bss_end__ = . ; 78 1.6 maxv . = ALIGN(__PAGE_SIZE); 79 1.6 maxv 80 1.8 skrll __end__ = . ; 81 1.8 skrll _end = .; 82 1.8 skrll PROVIDE(end = .); 83 1.6 maxv .note.netbsd.ident : 84 1.6 maxv { 85 1.6 maxv KEEP(*(.note.netbsd.ident)); 86 1.6 maxv } 87 1.1 matt } 88