kern.ldscript revision 1.18
11.17Smaxv/*	$NetBSD: kern.ldscript,v 1.18 2016/05/08 08:30:41 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	/* Read-only sections, merged into text segment: */
171.16Smaxv	.text :
181.16Smaxv	{
191.16Smaxv		*(.text)
201.16Smaxv		*(.text.*)
211.16Smaxv		*(.stub)
221.16Smaxv	}
231.16Smaxv	_etext = . ;
241.16Smaxv	PROVIDE (etext = .) ;
251.16Smaxv
261.18Smaxv	__rodata_start = . ;
271.16Smaxv	.rodata :
281.16Smaxv	{
291.16Smaxv		*(.rodata)
301.16Smaxv		*(.rodata.*)
311.16Smaxv	}
321.16Smaxv
331.16Smaxv	/*
341.17Smaxv	 * Push the data segment up to the next large page boundary so that we
351.17Smaxv	 * can map the text+rodata segments with large pages.
361.16Smaxv	 */
371.17Smaxv	. = ALIGN(__LARGE_PAGE_SIZE);
381.17Smaxv
391.16Smaxv	__data_start = . ;
401.16Smaxv	.data :
411.16Smaxv	{
421.16Smaxv		*(.data)
431.16Smaxv	}
441.16Smaxv
451.16Smaxv	. = ALIGN(COHERENCY_UNIT);
461.16Smaxv	.data.cacheline_aligned :
471.16Smaxv	{
481.16Smaxv		*(.data.cacheline_aligned)
491.16Smaxv	}
501.16Smaxv	. = ALIGN(COHERENCY_UNIT);
511.16Smaxv	.data.read_mostly :
521.16Smaxv	{
531.16Smaxv		*(.data.read_mostly)
541.16Smaxv	}
551.16Smaxv	. = ALIGN(COHERENCY_UNIT);
561.16Smaxv
571.16Smaxv	_edata = . ;
581.16Smaxv	PROVIDE (edata = .) ;
591.16Smaxv	__bss_start = . ;
601.16Smaxv	.bss :
611.16Smaxv	{
621.16Smaxv		*(.bss)
631.16Smaxv		*(.bss.*)
641.16Smaxv		*(COMMON)
651.16Smaxv		. = ALIGN(64 / 8);
661.16Smaxv	}
671.16Smaxv	. = ALIGN(64 / 8);
681.16Smaxv	_end = . ;
691.16Smaxv	PROVIDE (end = .) ;
701.16Smaxv	.note.netbsd.ident :
711.16Smaxv	{
721.16Smaxv		KEEP(*(.note.netbsd.ident));
731.16Smaxv	}
741.1Sfvdl}
751.16Smaxv
761.11SuebayasiSECTIONS
771.11Suebayasi{
781.16Smaxv	.text :
791.16Smaxv	AT (ADDR(.text) & 0x0fffffff)
801.16Smaxv	{
811.16Smaxv		*(.text)
821.16Smaxv	} = 0
831.11Suebayasi}
84