kern.ldscript revision 1.1
11.1Schristos/* $NetBSD: kern.ldscript,v 1.1 2021/08/30 18:59:57 christos Exp $ */ 21.1Schristos 31.1Schristos#include "assym.h" 41.1Schristos 51.1Schristos__PAGE_SIZE = 0x1000 ; 61.1Schristos 71.1SchristosENTRY(_start) 81.1SchristosSECTIONS 91.1Schristos{ 101.1Schristos .text : AT (ADDR(.text) & 0x0fffffff) 111.1Schristos { 121.1Schristos KEEP(*(.text._start)); 131.1Schristos . = ALIGN(__PAGE_SIZE); 141.1Schristos __text_user_start = . ; 151.1Schristos *(.text.user) 161.1Schristos . = ALIGN(__PAGE_SIZE); 171.1Schristos __text_user_end = . ; 181.1Schristos 191.1Schristos *(.text) 201.1Schristos *(.text.*) 211.1Schristos *(.stub) 221.1Schristos . = ALIGN(__PAGE_SIZE); 231.1Schristos } =0xCC 241.1Schristos _etext = . ; 251.1Schristos PROVIDE (etext = .) ; 261.1Schristos 271.1Schristos /* 281.1Schristos * Push the rodata segment up to the next large page boundary so that we 291.1Schristos * can map the text segment with large pages. 301.1Schristos */ 311.1Schristos . = ALIGN(__PAGE_SIZE); 321.1Schristos 331.1Schristos __rodata_start = . ; 341.1Schristos 351.1Schristos .rodata : 361.1Schristos { 371.1Schristos *(.rodata) 381.1Schristos *(.rodata.*) 391.1Schristos . = ALIGN(COHERENCY_UNIT); 401.1Schristos __CTOR_LIST__ = .; 411.1Schristos *(.ctors) 421.1Schristos __CTOR_END__ = .; 431.1Schristos } 441.1Schristos 451.1Schristos . = ALIGN(__PAGE_SIZE); 461.1Schristos 471.1Schristos __data_start = . ; 481.1Schristos .data : 491.1Schristos { 501.1Schristos *(.data) 511.1Schristos } 521.1Schristos 531.1Schristos . = ALIGN(COHERENCY_UNIT); 541.1Schristos .data.cacheline_aligned : 551.1Schristos { 561.1Schristos *(.data.cacheline_aligned) 571.1Schristos } 581.1Schristos . = ALIGN(COHERENCY_UNIT); 591.1Schristos .data.read_mostly : 601.1Schristos { 611.1Schristos *(.data.read_mostly) 621.1Schristos } 631.1Schristos . = ALIGN(COHERENCY_UNIT); 641.1Schristos 651.1Schristos _edata = . ; 661.1Schristos PROVIDE (edata = .) ; 671.1Schristos __bss_start = . ; 681.1Schristos .bss : 691.1Schristos { 701.1Schristos *(.bss) 711.1Schristos *(.bss.*) 721.1Schristos *(COMMON) 731.1Schristos . = ALIGN(__PAGE_SIZE); 741.1Schristos } 751.1Schristos 761.1Schristos . = ALIGN(__PAGE_SIZE); 771.1Schristos 781.1Schristos /* End of the kernel image */ 791.1Schristos __kernel_end = . ; 801.1Schristos 811.1Schristos _end = . ; 821.1Schristos PROVIDE (end = .) ; 831.1Schristos .note.netbsd.ident : 841.1Schristos { 851.1Schristos KEEP(*(.note.netbsd.ident)); 861.1Schristos } 871.1Schristos} 881.1Schristos 89