xref: /netbsd-src/sys/arch/sun2/conf/kern.ldscript (revision 624144bd9706009b232642d278ae737047dabbf4)
1*624144bdSchristos/*	$NetBSD: kern.ldscript,v 1.1 2021/08/30 18:59:57 christos Exp $	*/
2*624144bdSchristos
3*624144bdSchristos#include "assym.h"
4*624144bdSchristos
5*624144bdSchristos__PAGE_SIZE = 0x1000 ;
6*624144bdSchristos
7*624144bdSchristosENTRY(_start)
8*624144bdSchristosSECTIONS
9*624144bdSchristos{
10*624144bdSchristos	.text : AT (ADDR(.text) & 0x0fffffff)
11*624144bdSchristos	{
12*624144bdSchristos		KEEP(*(.text._start));
13*624144bdSchristos		. = ALIGN(__PAGE_SIZE);
14*624144bdSchristos		__text_user_start = . ;
15*624144bdSchristos		*(.text.user)
16*624144bdSchristos		. = ALIGN(__PAGE_SIZE);
17*624144bdSchristos		__text_user_end = . ;
18*624144bdSchristos
19*624144bdSchristos		*(.text)
20*624144bdSchristos		*(.text.*)
21*624144bdSchristos		*(.stub)
22*624144bdSchristos		. = ALIGN(__PAGE_SIZE);
23*624144bdSchristos	} =0xCC
24*624144bdSchristos	_etext = . ;
25*624144bdSchristos	PROVIDE (etext = .) ;
26*624144bdSchristos
27*624144bdSchristos	/*
28*624144bdSchristos	 * Push the rodata segment up to the next large page boundary so that we
29*624144bdSchristos	 * can map the text segment with large pages.
30*624144bdSchristos	 */
31*624144bdSchristos	. = ALIGN(__PAGE_SIZE);
32*624144bdSchristos
33*624144bdSchristos	__rodata_start = . ;
34*624144bdSchristos
35*624144bdSchristos	.rodata :
36*624144bdSchristos	{
37*624144bdSchristos		*(.rodata)
38*624144bdSchristos		*(.rodata.*)
39*624144bdSchristos		. = ALIGN(COHERENCY_UNIT);
40*624144bdSchristos		__CTOR_LIST__ = .;
41*624144bdSchristos		*(.ctors)
42*624144bdSchristos		__CTOR_END__ = .;
43*624144bdSchristos	}
44*624144bdSchristos
45*624144bdSchristos	. = ALIGN(__PAGE_SIZE);
46*624144bdSchristos
47*624144bdSchristos	__data_start = . ;
48*624144bdSchristos	.data :
49*624144bdSchristos	{
50*624144bdSchristos		*(.data)
51*624144bdSchristos	}
52*624144bdSchristos
53*624144bdSchristos	. = ALIGN(COHERENCY_UNIT);
54*624144bdSchristos	.data.cacheline_aligned :
55*624144bdSchristos	{
56*624144bdSchristos		*(.data.cacheline_aligned)
57*624144bdSchristos	}
58*624144bdSchristos	. = ALIGN(COHERENCY_UNIT);
59*624144bdSchristos	.data.read_mostly :
60*624144bdSchristos	{
61*624144bdSchristos		*(.data.read_mostly)
62*624144bdSchristos	}
63*624144bdSchristos	. = ALIGN(COHERENCY_UNIT);
64*624144bdSchristos
65*624144bdSchristos	_edata = . ;
66*624144bdSchristos	PROVIDE (edata = .) ;
67*624144bdSchristos	__bss_start = . ;
68*624144bdSchristos	.bss :
69*624144bdSchristos	{
70*624144bdSchristos		*(.bss)
71*624144bdSchristos		*(.bss.*)
72*624144bdSchristos		*(COMMON)
73*624144bdSchristos		. = ALIGN(__PAGE_SIZE);
74*624144bdSchristos	}
75*624144bdSchristos
76*624144bdSchristos	. = ALIGN(__PAGE_SIZE);
77*624144bdSchristos
78*624144bdSchristos	/* End of the kernel image */
79*624144bdSchristos	__kernel_end = . ;
80*624144bdSchristos
81*624144bdSchristos	_end = . ;
82*624144bdSchristos	PROVIDE (end = .) ;
83*624144bdSchristos	.note.netbsd.ident :
84*624144bdSchristos	{
85*624144bdSchristos		KEEP(*(.note.netbsd.ident));
86*624144bdSchristos	}
87*624144bdSchristos}
88*624144bdSchristos
89