kern.ldscript revision 1.22
11.22Smaxv/*	$NetBSD: kern.ldscript,v 1.22 2017/02/11 16:02:11 maxv Exp $	*/
21.1Sfvdl
31.15Suebayasi#include "assym.h"
41.15Suebayasi
51.17Smaxv/*
61.17Smaxv * PAE is enabled by default on amd64, the large page size is therefore
71.17Smaxv * 2MB (and not 4MB!).
81.17Smaxv */
91.17Smaxv
101.17Smaxv__PAGE_SIZE = 0x1000 ;
111.17Smaxv__LARGE_PAGE_SIZE = 0x200000 ;
121.17Smaxv
131.1SfvdlENTRY(_start)
141.1SfvdlSECTIONS
151.1Sfvdl{
161.16Smaxv	.text :
171.16Smaxv	{
181.16Smaxv		*(.text)
191.16Smaxv		*(.text.*)
201.16Smaxv		*(.stub)
211.16Smaxv	}
221.16Smaxv	_etext = . ;
231.16Smaxv	PROVIDE (etext = .) ;
241.16Smaxv
251.19Smaxv	/*
261.19Smaxv	 * Push the rodata segment up to the next large page boundary so that we
271.19Smaxv	 * can map the text segment with large pages.
281.19Smaxv	 */
291.19Smaxv	. = ALIGN(__LARGE_PAGE_SIZE);
301.19Smaxv
311.18Smaxv	__rodata_start = . ;
321.16Smaxv	.rodata :
331.16Smaxv	{
341.16Smaxv		*(.rodata)
351.16Smaxv		*(.rodata.*)
361.16Smaxv	}
371.16Smaxv
381.22Smaxv	. = ALIGN(__LARGE_PAGE_SIZE);
391.20Smaxv
401.16Smaxv	__data_start = . ;
411.16Smaxv	.data :
421.16Smaxv	{
431.16Smaxv		*(.data)
441.16Smaxv	}
451.16Smaxv
461.16Smaxv	. = ALIGN(COHERENCY_UNIT);
471.16Smaxv	.data.cacheline_aligned :
481.16Smaxv	{
491.16Smaxv		*(.data.cacheline_aligned)
501.16Smaxv	}
511.16Smaxv	. = ALIGN(COHERENCY_UNIT);
521.16Smaxv	.data.read_mostly :
531.16Smaxv	{
541.16Smaxv		*(.data.read_mostly)
551.16Smaxv	}
561.16Smaxv	. = ALIGN(COHERENCY_UNIT);
571.16Smaxv
581.16Smaxv	_edata = . ;
591.16Smaxv	PROVIDE (edata = .) ;
601.16Smaxv	__bss_start = . ;
611.16Smaxv	.bss :
621.16Smaxv	{
631.16Smaxv		*(.bss)
641.16Smaxv		*(.bss.*)
651.16Smaxv		*(COMMON)
661.16Smaxv		. = ALIGN(64 / 8);
671.16Smaxv	}
681.21Smaxv
691.22Smaxv	. = ALIGN(__LARGE_PAGE_SIZE);
701.21Smaxv
711.21Smaxv	/* End of the kernel image */
721.21Smaxv	__kernel_end = . ;
731.21Smaxv
741.16Smaxv	_end = . ;
751.16Smaxv	PROVIDE (end = .) ;
761.16Smaxv	.note.netbsd.ident :
771.16Smaxv	{
781.16Smaxv		KEEP(*(.note.netbsd.ident));
791.16Smaxv	}
801.1Sfvdl}
811.16Smaxv
821.11SuebayasiSECTIONS
831.11Suebayasi{
841.16Smaxv	.text :
851.16Smaxv	AT (ADDR(.text) & 0x0fffffff)
861.16Smaxv	{
871.16Smaxv		*(.text)
881.16Smaxv	} = 0
891.11Suebayasi}
90