kern.ldscript revision 1.21
11.21Smaxv/* $NetBSD: kern.ldscript,v 1.21 2016/05/12 09:05:16 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.16Smaxv .text : 171.16Smaxv { 181.16Smaxv *(.text) 191.16Smaxv *(.text.*) 201.16Smaxv *(.stub) 211.16Smaxv } 221.16Smaxv _etext = . ; 231.16Smaxv PROVIDE (etext = .) ; 241.16Smaxv 251.19Smaxv /* 261.19Smaxv * Push the rodata segment up to the next large page boundary so that we 271.19Smaxv * can map the text segment with large pages. 281.19Smaxv */ 291.19Smaxv . = ALIGN(__LARGE_PAGE_SIZE); 301.19Smaxv 311.18Smaxv __rodata_start = . ; 321.16Smaxv .rodata : 331.16Smaxv { 341.16Smaxv *(.rodata) 351.16Smaxv *(.rodata.*) 361.16Smaxv } 371.16Smaxv 381.20Smaxv . = ALIGN(__PAGE_SIZE); 391.20Smaxv 401.16Smaxv __data_start = . ; 411.16Smaxv .data : 421.16Smaxv { 431.16Smaxv *(.data) 441.16Smaxv } 451.16Smaxv 461.16Smaxv . = ALIGN(COHERENCY_UNIT); 471.16Smaxv .data.cacheline_aligned : 481.16Smaxv { 491.16Smaxv *(.data.cacheline_aligned) 501.16Smaxv } 511.16Smaxv . = ALIGN(COHERENCY_UNIT); 521.16Smaxv .data.read_mostly : 531.16Smaxv { 541.16Smaxv *(.data.read_mostly) 551.16Smaxv } 561.16Smaxv . = ALIGN(COHERENCY_UNIT); 571.16Smaxv 581.16Smaxv _edata = . ; 591.16Smaxv PROVIDE (edata = .) ; 601.16Smaxv __bss_start = . ; 611.16Smaxv .bss : 621.16Smaxv { 631.16Smaxv *(.bss) 641.16Smaxv *(.bss.*) 651.16Smaxv *(COMMON) 661.16Smaxv . = ALIGN(64 / 8); 671.16Smaxv } 681.21Smaxv 691.21Smaxv . = ALIGN(__PAGE_SIZE); 701.21Smaxv 711.21Smaxv /* End of the kernel image */ 721.21Smaxv __kernel_end = . ; 731.21Smaxv 741.16Smaxv _end = . ; 751.16Smaxv PROVIDE (end = .) ; 761.16Smaxv .note.netbsd.ident : 771.16Smaxv { 781.16Smaxv KEEP(*(.note.netbsd.ident)); 791.16Smaxv } 801.1Sfvdl} 811.16Smaxv 821.11SuebayasiSECTIONS 831.11Suebayasi{ 841.16Smaxv .text : 851.16Smaxv AT (ADDR(.text) & 0x0fffffff) 861.16Smaxv { 871.16Smaxv *(.text) 881.16Smaxv } = 0 891.11Suebayasi} 90