kern.ldscript revision 1.18
11.18Smaxv/* $NetBSD: kern.ldscript,v 1.18 2016/05/13 10:18:01 maxv Exp $ */ 21.1Sthorpej 31.15Suebayasi#include "assym.h" 41.15Suebayasi 51.18Smaxv__PAGE_SIZE = 0x1000 ; 61.18Smaxv 71.1SthorpejENTRY(_start) 81.1SthorpejSECTIONS 91.1Sthorpej{ 101.16Smaxv .text : 111.16Smaxv { 121.16Smaxv *(.text) 131.16Smaxv *(.text.*) 141.16Smaxv *(.stub) 151.16Smaxv } 161.16Smaxv _etext = . ; 171.16Smaxv PROVIDE (etext = .) ; 181.16Smaxv 191.17Smaxv /* 201.17Smaxv * Adjust the address for the rodata segment. We want to adjust up to 211.17Smaxv * the same address within the page on the next page up. 221.17Smaxv */ 231.17Smaxv . = ALIGN(0x1000) + (. & (0x1000 - 1)); 241.17Smaxv 251.17Smaxv __rodata_start = . ; 261.16Smaxv .rodata : 271.16Smaxv { 281.16Smaxv *(.rodata) 291.16Smaxv *(.rodata.*) 301.16Smaxv } 311.16Smaxv 321.16Smaxv __data_start = . ; 331.16Smaxv .data : 341.16Smaxv { 351.16Smaxv *(.data) 361.16Smaxv } 371.16Smaxv 381.16Smaxv . = ALIGN(COHERENCY_UNIT); 391.16Smaxv .data.cacheline_aligned : 401.16Smaxv { 411.16Smaxv *(.data.cacheline_aligned) 421.16Smaxv } 431.16Smaxv . = ALIGN(COHERENCY_UNIT); 441.16Smaxv .data.read_mostly : 451.16Smaxv { 461.16Smaxv *(.data.read_mostly) 471.16Smaxv } 481.16Smaxv . = ALIGN(COHERENCY_UNIT); 491.18Smaxv 501.16Smaxv _edata = . ; 511.16Smaxv PROVIDE (edata = .) ; 521.16Smaxv __bss_start = . ; 531.16Smaxv .bss : 541.16Smaxv { 551.16Smaxv *(.bss) 561.16Smaxv *(.bss.*) 571.16Smaxv *(COMMON) 581.16Smaxv . = ALIGN(32 / 8); 591.16Smaxv } 601.18Smaxv 611.18Smaxv . = ALIGN(__PAGE_SIZE); 621.18Smaxv 631.18Smaxv /* End of the kernel image */ 641.18Smaxv __kernel_end = . ; 651.18Smaxv 661.16Smaxv _end = . ; 671.16Smaxv PROVIDE (end = .) ; 681.16Smaxv .note.netbsd.ident : 691.16Smaxv { 701.16Smaxv KEEP(*(.note.netbsd.ident)); 711.16Smaxv } 721.1Sthorpej} 731.16Smaxv 741.13SuebayasiSECTIONS 751.13Suebayasi{ 761.16Smaxv .text : 771.16Smaxv AT (ADDR(.text) & 0x0fffffff) 781.16Smaxv { 791.16Smaxv *(.text) 801.16Smaxv } = 0 811.13Suebayasi} 82