11.1Schristos/*	$NetBSD: kern.ldscript,v 1.1 2021/08/30 18:59:57 christos Exp $	*/
21.1Schristos
31.1Schristos#include "assym.h"
41.1Schristos
51.1Schristos__PAGE_SIZE = 0x1000 ;
61.1Schristos
71.1SchristosENTRY(_start)
81.1SchristosSECTIONS
91.1Schristos{
101.1Schristos	.text : AT (ADDR(.text) & 0x0fffffff)
111.1Schristos	{
121.1Schristos		KEEP(*(.text._start));
131.1Schristos		. = ALIGN(__PAGE_SIZE);
141.1Schristos		__text_user_start = . ;
151.1Schristos		*(.text.user)
161.1Schristos		. = ALIGN(__PAGE_SIZE);
171.1Schristos		__text_user_end = . ;
181.1Schristos
191.1Schristos		*(.text)
201.1Schristos		*(.text.*)
211.1Schristos		*(.stub)
221.1Schristos		. = ALIGN(__PAGE_SIZE);
231.1Schristos	} =0xCC
241.1Schristos	_etext = . ;
251.1Schristos	PROVIDE (etext = .) ;
261.1Schristos
271.1Schristos	/*
281.1Schristos	 * Push the rodata segment up to the next large page boundary so that we
291.1Schristos	 * can map the text segment with large pages.
301.1Schristos	 */
311.1Schristos	. = ALIGN(__PAGE_SIZE);
321.1Schristos
331.1Schristos	__rodata_start = . ;
341.1Schristos
351.1Schristos	.rodata :
361.1Schristos	{
371.1Schristos		*(.rodata)
381.1Schristos		*(.rodata.*)
391.1Schristos		. = ALIGN(COHERENCY_UNIT);
401.1Schristos		__CTOR_LIST__ = .;
411.1Schristos		*(.ctors)
421.1Schristos		__CTOR_END__ = .;
431.1Schristos	}
441.1Schristos
451.1Schristos	. = ALIGN(__PAGE_SIZE);
461.1Schristos
471.1Schristos	__data_start = . ;
481.1Schristos	.data :
491.1Schristos	{
501.1Schristos		*(.data)
511.1Schristos	}
521.1Schristos
531.1Schristos	. = ALIGN(COHERENCY_UNIT);
541.1Schristos	.data.cacheline_aligned :
551.1Schristos	{
561.1Schristos		*(.data.cacheline_aligned)
571.1Schristos	}
581.1Schristos	. = ALIGN(COHERENCY_UNIT);
591.1Schristos	.data.read_mostly :
601.1Schristos	{
611.1Schristos		*(.data.read_mostly)
621.1Schristos	}
631.1Schristos	. = ALIGN(COHERENCY_UNIT);
641.1Schristos
651.1Schristos	_edata = . ;
661.1Schristos	PROVIDE (edata = .) ;
671.1Schristos	__bss_start = . ;
681.1Schristos	.bss :
691.1Schristos	{
701.1Schristos		*(.bss)
711.1Schristos		*(.bss.*)
721.1Schristos		*(COMMON)
731.1Schristos		. = ALIGN(__PAGE_SIZE);
741.1Schristos	}
751.1Schristos
761.1Schristos	. = ALIGN(__PAGE_SIZE);
771.1Schristos
781.1Schristos	/* End of the kernel image */
791.1Schristos	__kernel_end = . ;
801.1Schristos
811.1Schristos	_end = . ;
821.1Schristos	PROVIDE (end = .) ;
831.1Schristos	.note.netbsd.ident :
841.1Schristos	{
851.1Schristos		KEEP(*(.note.netbsd.ident));
861.1Schristos	}
871.1Schristos}
881.1Schristos
89