kern.ldscript revision 1.17
11.17Smaxv/*	$NetBSD: kern.ldscript,v 1.17 2016/05/07 12:45:55 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.16Smaxv	.rodata :
271.16Smaxv	{
281.16Smaxv		*(.rodata)
291.16Smaxv		*(.rodata.*)
301.16Smaxv	}
311.16Smaxv
321.16Smaxv	/*
331.17Smaxv	 * Push the data segment up to the next large page boundary so that we
341.17Smaxv	 * can map the text+rodata segments with large pages.
351.16Smaxv	 */
361.17Smaxv	. = ALIGN(__LARGE_PAGE_SIZE);
371.17Smaxv
381.16Smaxv	__data_start = . ;
391.16Smaxv	.data :
401.16Smaxv	{
411.16Smaxv		*(.data)
421.16Smaxv	}
431.16Smaxv
441.16Smaxv	. = ALIGN(COHERENCY_UNIT);
451.16Smaxv	.data.cacheline_aligned :
461.16Smaxv	{
471.16Smaxv		*(.data.cacheline_aligned)
481.16Smaxv	}
491.16Smaxv	. = ALIGN(COHERENCY_UNIT);
501.16Smaxv	.data.read_mostly :
511.16Smaxv	{
521.16Smaxv		*(.data.read_mostly)
531.16Smaxv	}
541.16Smaxv	. = ALIGN(COHERENCY_UNIT);
551.16Smaxv
561.16Smaxv	_edata = . ;
571.16Smaxv	PROVIDE (edata = .) ;
581.16Smaxv	__bss_start = . ;
591.16Smaxv	.bss :
601.16Smaxv	{
611.16Smaxv		*(.bss)
621.16Smaxv		*(.bss.*)
631.16Smaxv		*(COMMON)
641.16Smaxv		. = ALIGN(64 / 8);
651.16Smaxv	}
661.16Smaxv	. = ALIGN(64 / 8);
671.16Smaxv	_end = . ;
681.16Smaxv	PROVIDE (end = .) ;
691.16Smaxv	.note.netbsd.ident :
701.16Smaxv	{
711.16Smaxv		KEEP(*(.note.netbsd.ident));
721.16Smaxv	}
731.1Sfvdl}
741.16Smaxv
751.11SuebayasiSECTIONS
761.11Suebayasi{
771.16Smaxv	.text :
781.16Smaxv	AT (ADDR(.text) & 0x0fffffff)
791.16Smaxv	{
801.16Smaxv		*(.text)
811.16Smaxv	} = 0
821.11Suebayasi}
83