kern.ldscript revision 1.18
11.18Smaxv/*	$NetBSD: kern.ldscript,v 1.18 2016/05/13 10:18:01 maxv Exp $	*/
21.1Sthorpej
31.15Suebayasi#include "assym.h"
41.15Suebayasi
51.18Smaxv__PAGE_SIZE = 0x1000 ;
61.18Smaxv
71.1SthorpejENTRY(_start)
81.1SthorpejSECTIONS
91.1Sthorpej{
101.16Smaxv	.text :
111.16Smaxv	{
121.16Smaxv		*(.text)
131.16Smaxv		*(.text.*)
141.16Smaxv		*(.stub)
151.16Smaxv	}
161.16Smaxv	_etext = . ;
171.16Smaxv	PROVIDE (etext = .) ;
181.16Smaxv
191.17Smaxv	/*
201.17Smaxv	 * Adjust the address for the rodata segment.  We want to adjust up to
211.17Smaxv	 * the same address within the page on the next page up.
221.17Smaxv	 */
231.17Smaxv	. = ALIGN(0x1000) + (. & (0x1000 - 1));
241.17Smaxv
251.17Smaxv	__rodata_start = . ;
261.16Smaxv	.rodata :
271.16Smaxv	{
281.16Smaxv		*(.rodata)
291.16Smaxv		*(.rodata.*)
301.16Smaxv	}
311.16Smaxv
321.16Smaxv	__data_start = . ;
331.16Smaxv	.data :
341.16Smaxv	{
351.16Smaxv		*(.data)
361.16Smaxv	}
371.16Smaxv
381.16Smaxv	. = ALIGN(COHERENCY_UNIT);
391.16Smaxv	.data.cacheline_aligned :
401.16Smaxv	{
411.16Smaxv		*(.data.cacheline_aligned)
421.16Smaxv	}
431.16Smaxv	. = ALIGN(COHERENCY_UNIT);
441.16Smaxv	.data.read_mostly :
451.16Smaxv	{
461.16Smaxv		*(.data.read_mostly)
471.16Smaxv	}
481.16Smaxv	. = ALIGN(COHERENCY_UNIT);
491.18Smaxv
501.16Smaxv	_edata = . ;
511.16Smaxv	PROVIDE (edata = .) ;
521.16Smaxv	__bss_start = . ;
531.16Smaxv	.bss :
541.16Smaxv	{
551.16Smaxv		*(.bss)
561.16Smaxv		*(.bss.*)
571.16Smaxv		*(COMMON)
581.16Smaxv	. = ALIGN(32 / 8);
591.16Smaxv	}
601.18Smaxv
611.18Smaxv	. = ALIGN(__PAGE_SIZE);
621.18Smaxv
631.18Smaxv	/* End of the kernel image */
641.18Smaxv	__kernel_end = . ;
651.18Smaxv
661.16Smaxv	_end = . ;
671.16Smaxv	PROVIDE (end = .) ;
681.16Smaxv	.note.netbsd.ident :
691.16Smaxv	{
701.16Smaxv		KEEP(*(.note.netbsd.ident));
711.16Smaxv	}
721.1Sthorpej}
731.16Smaxv
741.13SuebayasiSECTIONS
751.13Suebayasi{
761.16Smaxv	.text :
771.16Smaxv	AT (ADDR(.text) & 0x0fffffff)
781.16Smaxv	{
791.16Smaxv		*(.text)
801.16Smaxv	} = 0
811.13Suebayasi}
82