Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.23
      1  1.23      maxv /*	$NetBSD: kern.ldscript,v 1.23 2017/06/14 07:45:45 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.16      maxv 	.text :
     17  1.16      maxv 	{
     18  1.16      maxv 		*(.text)
     19  1.16      maxv 		*(.text.*)
     20  1.16      maxv 		*(.stub)
     21  1.16      maxv 	}
     22  1.16      maxv 	_etext = . ;
     23  1.16      maxv 	PROVIDE (etext = .) ;
     24  1.16      maxv 
     25  1.19      maxv 	/*
     26  1.19      maxv 	 * Push the rodata segment up to the next large page boundary so that we
     27  1.19      maxv 	 * can map the text segment with large pages.
     28  1.19      maxv 	 */
     29  1.19      maxv 	. = ALIGN(__LARGE_PAGE_SIZE);
     30  1.19      maxv 
     31  1.18      maxv 	__rodata_start = . ;
     32  1.16      maxv 	.rodata :
     33  1.16      maxv 	{
     34  1.16      maxv 		*(.rodata)
     35  1.16      maxv 		*(.rodata.*)
     36  1.16      maxv 	}
     37  1.16      maxv 
     38  1.22      maxv 	. = ALIGN(__LARGE_PAGE_SIZE);
     39  1.20      maxv 
     40  1.16      maxv 	__data_start = . ;
     41  1.16      maxv 	.data :
     42  1.16      maxv 	{
     43  1.16      maxv 		*(.data)
     44  1.16      maxv 	}
     45  1.16      maxv 
     46  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     47  1.16      maxv 	.data.cacheline_aligned :
     48  1.16      maxv 	{
     49  1.16      maxv 		*(.data.cacheline_aligned)
     50  1.16      maxv 	}
     51  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     52  1.16      maxv 	.data.read_mostly :
     53  1.16      maxv 	{
     54  1.16      maxv 		*(.data.read_mostly)
     55  1.16      maxv 	}
     56  1.16      maxv 	. = ALIGN(COHERENCY_UNIT);
     57  1.16      maxv 
     58  1.16      maxv 	_edata = . ;
     59  1.16      maxv 	PROVIDE (edata = .) ;
     60  1.16      maxv 	__bss_start = . ;
     61  1.16      maxv 	.bss :
     62  1.16      maxv 	{
     63  1.16      maxv 		*(.bss)
     64  1.16      maxv 		*(.bss.*)
     65  1.16      maxv 		*(COMMON)
     66  1.23      maxv 		. = ALIGN(__LARGE_PAGE_SIZE);
     67  1.16      maxv 	}
     68  1.21      maxv 
     69  1.23      maxv 	. = ALIGN(__PAGE_SIZE);
     70  1.21      maxv 
     71  1.21      maxv 	/* End of the kernel image */
     72  1.21      maxv 	__kernel_end = . ;
     73  1.21      maxv 
     74  1.16      maxv 	_end = . ;
     75  1.16      maxv 	PROVIDE (end = .) ;
     76  1.16      maxv 	.note.netbsd.ident :
     77  1.16      maxv 	{
     78  1.16      maxv 		KEEP(*(.note.netbsd.ident));
     79  1.16      maxv 	}
     80   1.1      fvdl }
     81  1.16      maxv 
     82  1.11  uebayasi SECTIONS
     83  1.11  uebayasi {
     84  1.16      maxv 	.text :
     85  1.16      maxv 	AT (ADDR(.text) & 0x0fffffff)
     86  1.16      maxv 	{
     87  1.16      maxv 		*(.text)
     88  1.16      maxv 	} = 0
     89  1.11  uebayasi }
     90