xref: /netbsd-src/sys/arch/riscv/conf/kern.ldscript (revision 6a4a1d7bd501ec01e0e2e7a64668c8956a26ea43)
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