1*6a4a1d7bSskrll/* $NetBSD: kern.ldscript,v 1.8 2021/05/01 07:13:21 skrll Exp $ */ 2*6a4a1d7bSskrll 3*6a4a1d7bSskrll#include "assym.h" 470c2d72aSskrll 59687a165SmattOUTPUT_ARCH(riscv) 64297c647SmaxvENTRY(start) 74297c647Smaxv 84297c647Smaxv__PAGE_SIZE = 0x1000 ; 94297c647Smaxv__LARGE_PAGE_SIZE = 0x200000 ; 104297c647Smaxv 119687a165SmattSECTIONS 129687a165Smatt{ 13*6a4a1d7bSskrll 14*6a4a1d7bSskrll .text : AT (KERNEL_PHYS) 159687a165Smatt { 16*6a4a1d7bSskrll PROVIDE(__kernel_text = .); 179687a165Smatt *(.text) 184297c647Smaxv *(.text.*) 194297c647Smaxv *(.stub) 209687a165Smatt } 214297c647Smaxv _etext = . ; 229687a165Smatt PROVIDE (etext = .); 234297c647Smaxv 244297c647Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 254297c647Smaxv 26*6a4a1d7bSskrll PROVIDE(__rodata_start = .); 274297c647Smaxv .rodata : 289687a165Smatt { 294297c647Smaxv *(.rodata) 304297c647Smaxv *(.rodata.*) 314297c647Smaxv *(.srodata) 324297c647Smaxv *(.srodata.*) 339687a165Smatt } 344297c647Smaxv 35*6a4a1d7bSskrll PROVIDE(_etext = .); 36*6a4a1d7bSskrll PROVIDE(etext = .); 374297c647Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 384297c647Smaxv 399687a165Smatt .data : 409687a165Smatt { 41*6a4a1d7bSskrll PROVIDE(__data_start = .); 424297c647Smaxv *(.data) 43*6a4a1d7bSskrll } 44*6a4a1d7bSskrll 45*6a4a1d7bSskrll . = ALIGN(COHERENCY_UNIT); 46*6a4a1d7bSskrll .data.cacheline_aligned : 47*6a4a1d7bSskrll { 48*6a4a1d7bSskrll *(.data.cacheline_aligned) 49*6a4a1d7bSskrll } 50*6a4a1d7bSskrll . = ALIGN(COHERENCY_UNIT); 51*6a4a1d7bSskrll .data.read_mostly : 52*6a4a1d7bSskrll { 53*6a4a1d7bSskrll *(.data.read_mostly) 54*6a4a1d7bSskrll } 55*6a4a1d7bSskrll . = ALIGN(COHERENCY_UNIT); 56*6a4a1d7bSskrll 57*6a4a1d7bSskrll .sdata : 58*6a4a1d7bSskrll { 59*6a4a1d7bSskrll __global_pointer$ = . + 0x800; 604297c647Smaxv *(.sdata) 614297c647Smaxv *(.sdata.*) 629687a165Smatt } 634297c647Smaxv _edata = .; 644297c647Smaxv PROVIDE (edata = .); 654297c647Smaxv 669687a165Smatt __bss_start = .; 679687a165Smatt .bss : 689687a165Smatt { 694297c647Smaxv *(.bss) 704297c647Smaxv *(.bss.*) 714297c647Smaxv *(.sbss) 724297c647Smaxv *(.sbss.*) 739687a165Smatt *(COMMON) 744297c647Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 759687a165Smatt } 76*6a4a1d7bSskrll _bss_end__ = . ; 77*6a4a1d7bSskrll __bss_end__ = . ; 784297c647Smaxv . = ALIGN(__PAGE_SIZE); 794297c647Smaxv 80*6a4a1d7bSskrll __end__ = . ; 814297c647Smaxv _end = .; 824297c647Smaxv PROVIDE(end = .); 834297c647Smaxv .note.netbsd.ident : 844297c647Smaxv { 854297c647Smaxv KEEP(*(.note.netbsd.ident)); 864297c647Smaxv } 879687a165Smatt} 88