1 1.1 matt OUTPUT_ARCH(riscv) 2 1.5.20.1 martin ENTRY(start) 3 1.5.20.1 martin 4 1.5.20.1 martin __PAGE_SIZE = 0x1000 ; 5 1.5.20.1 martin __LARGE_PAGE_SIZE = 0x200000 ; 6 1.5.20.1 martin 7 1.1 matt SECTIONS 8 1.1 matt { 9 1.5.20.1 martin .text : AT (ADDR(.text) & 0x0fffffff) 10 1.5.20.1 martin { 11 1.5.20.1 martin *(.text) 12 1.5.20.1 martin *(.text.*) 13 1.5.20.1 martin *(.stub) 14 1.5.20.1 martin } 15 1.5.20.1 martin _etext = . ; 16 1.5.20.1 martin PROVIDE (etext = .); 17 1.5.20.1 martin 18 1.5.20.1 martin . = ALIGN(__LARGE_PAGE_SIZE); 19 1.5.20.1 martin 20 1.5.20.1 martin __rodata_start = . ; 21 1.5.20.1 martin .rodata : 22 1.5.20.1 martin { 23 1.5.20.1 martin *(.rodata) 24 1.5.20.1 martin *(.rodata.*) 25 1.5.20.1 martin *(.srodata) 26 1.5.20.1 martin *(.srodata.*) 27 1.5.20.1 martin } 28 1.5.20.1 martin 29 1.5.20.1 martin . = ALIGN(__LARGE_PAGE_SIZE); 30 1.5.20.1 martin 31 1.5.20.1 martin __data_start = . ; 32 1.5.20.1 martin .data : 33 1.5.20.1 martin { 34 1.5.20.1 martin *(.data) 35 1.5.20.1 martin *(.sdata) 36 1.5.20.1 martin *(.sdata.*) 37 1.5.20.1 martin } 38 1.5.20.1 martin _edata = . ; 39 1.5.20.1 martin PROVIDE (edata = .) ; 40 1.5.20.1 martin 41 1.5.20.1 martin __bss_start = .; 42 1.5.20.1 martin .bss : 43 1.5.20.1 martin { 44 1.5.20.1 martin *(.bss) 45 1.5.20.1 martin *(.bss.*) 46 1.5.20.1 martin *(.sbss) 47 1.5.20.1 martin *(.sbss.*) 48 1.5.20.1 martin *(COMMON) 49 1.5.20.1 martin . = ALIGN(__LARGE_PAGE_SIZE); 50 1.5.20.1 martin } 51 1.5.20.1 martin 52 1.5.20.1 martin . = ALIGN(__PAGE_SIZE); 53 1.5.20.1 martin 54 1.5.20.1 martin /* End of the kernel image */ 55 1.5.20.1 martin __kernel_end = . ; 56 1.5.20.1 martin 57 1.5.20.1 martin _end = . ; 58 1.5.20.1 martin PROVIDE (end = .) ; 59 1.5.20.1 martin .note.netbsd.ident : 60 1.5.20.1 martin { 61 1.5.20.1 martin KEEP(*(.note.netbsd.ident)); 62 1.5.20.1 martin } 63 1.1 matt } 64