Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.24
      1  1.24      maxv /*	$NetBSD: kern.ldscript,v 1.24 2017/08/18 10:28:53 maxv Exp $	*/
      2   1.1      fvdl 
      3  1.15  uebayasi #include "assym.h"
      4  1.15  uebayasi 
      5  1.17      maxv /*
      6  1.17      maxv  * PAE is enabled by default on amd64, the large page size is therefore
      7  1.17      maxv  * 2MB (and not 4MB!).
      8  1.17      maxv  */
      9  1.17      maxv 
     10  1.17      maxv __PAGE_SIZE = 0x1000 ;
     11  1.17      maxv __LARGE_PAGE_SIZE = 0x200000 ;
     12  1.17      maxv 
     13   1.1      fvdl ENTRY(_start)
     14   1.1      fvdl SECTIONS
     15   1.1      fvdl {
     16  1.24      maxv 	.text : AT (ADDR(.text) & 0x0fffffff)
     17  1.16      maxv 	{
     18  1.16      maxv 		*(.text)
     19  1.16      maxv 		*(.text.*)
     20  1.16      maxv 		*(.stub)
     21  1.24      maxv 		. = ALIGN(__LARGE_PAGE_SIZE);
     22  1.24      maxv 	} =0xCC
     23  1.16      maxv 	_etext = . ;
     24  1.16      maxv 	PROVIDE (etext = .) ;
     25  1.16      maxv 
     26  1.19      maxv 	/*
     27  1.19      maxv 	 * Push the rodata segment up to the next large page boundary so that we
     28  1.19      maxv 	 * can map the text segment with large pages.
     29  1.19      maxv 	 */
     30  1.19      maxv 	. = ALIGN(__LARGE_PAGE_SIZE);
     31  1.19      maxv 
     32  1.18      maxv 	__rodata_start = . ;
     33  1.16      maxv 	.rodata :
     34  1.16      maxv 	{
     35  1.16      maxv 		*(.rodata)
     36  1.16      maxv 		*(.rodata.*)
     37  1.16      maxv 	}
     38  1.16      maxv 
     39  1.22      maxv 	. = ALIGN(__LARGE_PAGE_SIZE);
     40  1.20      maxv 
     41  1.16      maxv 	__data_start = . ;
     42  1.16      maxv 	.data :
     43  1.16      maxv 	{
     44  1.16      maxv 		*(.data)
     45  1.16      maxv 	}
     46  1.16      maxv 
     47  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     48  1.16      maxv 	.data.cacheline_aligned :
     49  1.16      maxv 	{
     50  1.16      maxv 		*(.data.cacheline_aligned)
     51  1.16      maxv 	}
     52  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     53  1.16      maxv 	.data.read_mostly :
     54  1.16      maxv 	{
     55  1.16      maxv 		*(.data.read_mostly)
     56  1.16      maxv 	}
     57  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     58  1.16      maxv 
     59  1.16      maxv 	_edata = . ;
     60  1.16      maxv 	PROVIDE (edata = .) ;
     61  1.16      maxv 	__bss_start = . ;
     62  1.16      maxv 	.bss :
     63  1.16      maxv 	{
     64  1.16      maxv 		*(.bss)
     65  1.16      maxv 		*(.bss.*)
     66  1.16      maxv 		*(COMMON)
     67  1.23      maxv 		. = ALIGN(__LARGE_PAGE_SIZE);
     68  1.16      maxv 	}
     69  1.21      maxv 
     70  1.23      maxv 	. = ALIGN(__PAGE_SIZE);
     71  1.21      maxv 
     72  1.21      maxv 	/* End of the kernel image */
     73  1.21      maxv 	__kernel_end = . ;
     74  1.21      maxv 
     75  1.16      maxv 	_end = . ;
     76  1.16      maxv 	PROVIDE (end = .) ;
     77  1.16      maxv 	.note.netbsd.ident :
     78  1.16      maxv 	{
     79  1.16      maxv 		KEEP(*(.note.netbsd.ident));
     80  1.16      maxv 	}
     81   1.1      fvdl }
     82  1.16      maxv 
     83