kern.ldscript revision 1.25
11.25Smaxv/* $NetBSD: kern.ldscript,v 1.25 2018/01/07 12:42:46 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.24Smaxv .text : AT (ADDR(.text) & 0x0fffffff) 171.16Smaxv { 181.16Smaxv *(.text) 191.16Smaxv *(.text.*) 201.16Smaxv *(.stub) 211.24Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 221.24Smaxv } =0xCC 231.16Smaxv _etext = . ; 241.16Smaxv PROVIDE (etext = .) ; 251.16Smaxv 261.19Smaxv /* 271.19Smaxv * Push the rodata segment up to the next large page boundary so that we 281.19Smaxv * can map the text segment with large pages. 291.19Smaxv */ 301.19Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 311.19Smaxv 321.18Smaxv __rodata_start = . ; 331.25Smaxv 341.25Smaxv .rodata.hotpatch : 351.25Smaxv { 361.25Smaxv __rodata_hotpatch_start = . ; 371.25Smaxv *(.rodata.hotpatch) 381.25Smaxv __rodata_hotpatch_end = . ; 391.25Smaxv } 401.25Smaxv 411.16Smaxv .rodata : 421.16Smaxv { 431.16Smaxv *(.rodata) 441.16Smaxv *(.rodata.*) 451.16Smaxv } 461.16Smaxv 471.22Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 481.20Smaxv 491.16Smaxv __data_start = . ; 501.16Smaxv .data : 511.16Smaxv { 521.16Smaxv *(.data) 531.16Smaxv } 541.16Smaxv 551.16Smaxv . = ALIGN(COHERENCY_UNIT); 561.16Smaxv .data.cacheline_aligned : 571.16Smaxv { 581.16Smaxv *(.data.cacheline_aligned) 591.16Smaxv } 601.16Smaxv . = ALIGN(COHERENCY_UNIT); 611.16Smaxv .data.read_mostly : 621.16Smaxv { 631.16Smaxv *(.data.read_mostly) 641.16Smaxv } 651.16Smaxv . = ALIGN(COHERENCY_UNIT); 661.16Smaxv 671.16Smaxv _edata = . ; 681.16Smaxv PROVIDE (edata = .) ; 691.16Smaxv __bss_start = . ; 701.16Smaxv .bss : 711.16Smaxv { 721.16Smaxv *(.bss) 731.16Smaxv *(.bss.*) 741.16Smaxv *(COMMON) 751.23Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 761.16Smaxv } 771.21Smaxv 781.23Smaxv . = ALIGN(__PAGE_SIZE); 791.21Smaxv 801.21Smaxv /* End of the kernel image */ 811.21Smaxv __kernel_end = . ; 821.21Smaxv 831.16Smaxv _end = . ; 841.16Smaxv PROVIDE (end = .) ; 851.16Smaxv .note.netbsd.ident : 861.16Smaxv { 871.16Smaxv KEEP(*(.note.netbsd.ident)); 881.16Smaxv } 891.1Sfvdl} 901.16Smaxv 91