Home | History | Annotate | Line # | Download | only in conf
      1 /*	$NetBSD: kern.ldscript,v 1.31 2020/01/09 00:42:24 manu Exp $	*/
      2 
      3 #include "assym.h"
      4 
      5 /*
      6  * PAE is enabled by default on amd64, the large page size is therefore
      7  * 2MB (and not 4MB!).
      8  */
      9 
     10 __PAGE_SIZE = 0x1000 ;
     11 __LARGE_PAGE_SIZE = 0x200000 ;
     12 
     13 ENTRY(_start)
     14 SECTIONS
     15 {
     16 	.text : AT (ADDR(.text) & 0x0fffffff)
     17 	{
     18 		. = ALIGN(__PAGE_SIZE);
     19 		__text_user_start = . ;
     20 		*(.text.user)
     21 		. = ALIGN(__PAGE_SIZE);
     22 		__text_user_end = . ;
     23 
     24 		*(.text)
     25 		*(.text.*)
     26 		*(.stub)
     27 		. = ALIGN(__LARGE_PAGE_SIZE);
     28 	} =0xCC
     29 	_etext = . ;
     30 	PROVIDE (etext = .) ;
     31 
     32 	/*
     33 	 * Push the rodata segment up to the next large page boundary so that we
     34 	 * can map the text segment with large pages.
     35 	 */
     36 	. = ALIGN(__LARGE_PAGE_SIZE);
     37 
     38 	__rodata_start = . ;
     39 
     40 	.rodata.hotpatch :
     41 	{
     42 		__rodata_hotpatch_start = . ;
     43 		*(.rodata.hotpatch)
     44 		__rodata_hotpatch_end = . ;
     45 	}
     46 
     47 	.rodata :
     48 	{
     49 		*(.rodata)
     50 		*(.rodata.*)
     51 		. = ALIGN(COHERENCY_UNIT);
     52 		__CTOR_LIST__ = .;
     53 		*(.ctors)
     54 		__CTOR_END__ = .;
     55 	}
     56 
     57 	. = ALIGN(__LARGE_PAGE_SIZE);
     58 
     59 	__data_start = . ;
     60 	.data :
     61 	{
     62 		*(.data)
     63 	}
     64 
     65 	. = ALIGN(COHERENCY_UNIT);
     66 	.data.cacheline_aligned :
     67 	{
     68 		*(.data.cacheline_aligned)
     69 	}
     70 	. = ALIGN(COHERENCY_UNIT);
     71 	.data.read_mostly :
     72 	{
     73 		*(.data.read_mostly)
     74 	}
     75 	. = ALIGN(COHERENCY_UNIT);
     76 
     77 	_edata = . ;
     78 	PROVIDE (edata = .) ;
     79 	__bss_start = . ;
     80 	.bss :
     81 	{
     82 		*(.bss)
     83 		*(.bss.*)
     84 		*(COMMON)
     85 		. = ALIGN(__LARGE_PAGE_SIZE);
     86 	}
     87 
     88 	. = ALIGN(__PAGE_SIZE);
     89 
     90 	/* End of the kernel image */
     91 	__kernel_end = . ;
     92 
     93 	_end = . ;
     94 	PROVIDE (end = .) ;
     95 	.note.netbsd.ident :
     96 	{
     97 		KEEP(*(.note.netbsd.ident));
     98 	}
     99 }
    100 
    101