kern.ldscript revision 1.20
11.20Smaxv/* $NetBSD: kern.ldscript,v 1.20 2016/05/12 07:21:18 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 /* Read-only sections, merged into text segment: */ 171.16Smaxv .text : 181.16Smaxv { 191.16Smaxv *(.text) 201.16Smaxv *(.text.*) 211.16Smaxv *(.stub) 221.16Smaxv } 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.16Smaxv .rodata : 341.16Smaxv { 351.16Smaxv *(.rodata) 361.16Smaxv *(.rodata.*) 371.16Smaxv } 381.16Smaxv 391.20Smaxv . = ALIGN(__PAGE_SIZE); 401.20Smaxv 411.16Smaxv __data_start = . ; 421.16Smaxv .data : 431.16Smaxv { 441.16Smaxv *(.data) 451.16Smaxv } 461.16Smaxv 471.16Smaxv . = ALIGN(COHERENCY_UNIT); 481.16Smaxv .data.cacheline_aligned : 491.16Smaxv { 501.16Smaxv *(.data.cacheline_aligned) 511.16Smaxv } 521.16Smaxv . = ALIGN(COHERENCY_UNIT); 531.16Smaxv .data.read_mostly : 541.16Smaxv { 551.16Smaxv *(.data.read_mostly) 561.16Smaxv } 571.16Smaxv . = ALIGN(COHERENCY_UNIT); 581.16Smaxv 591.16Smaxv _edata = . ; 601.16Smaxv PROVIDE (edata = .) ; 611.16Smaxv __bss_start = . ; 621.16Smaxv .bss : 631.16Smaxv { 641.16Smaxv *(.bss) 651.16Smaxv *(.bss.*) 661.16Smaxv *(COMMON) 671.16Smaxv . = ALIGN(64 / 8); 681.16Smaxv } 691.16Smaxv . = ALIGN(64 / 8); 701.16Smaxv _end = . ; 711.16Smaxv PROVIDE (end = .) ; 721.16Smaxv .note.netbsd.ident : 731.16Smaxv { 741.16Smaxv KEEP(*(.note.netbsd.ident)); 751.16Smaxv } 761.1Sfvdl} 771.16Smaxv 781.11SuebayasiSECTIONS 791.11Suebayasi{ 801.16Smaxv .text : 811.16Smaxv AT (ADDR(.text) & 0x0fffffff) 821.16Smaxv { 831.16Smaxv *(.text) 841.16Smaxv } = 0 851.11Suebayasi} 86