kern.ldscript revision 1.10
11.9Suebayasi/*	$NetBSD: kern.ldscript,v 1.10 2015/08/20 08:25:33 uebayasi Exp $	*/
21.1Sfvdl
31.1SfvdlOUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
41.1Sfvdl	      "elf64-x86-64")
51.1SfvdlOUTPUT_ARCH(i386:x86-64)
61.1SfvdlENTRY(_start)
71.1SfvdlSECTIONS
81.1Sfvdl{
91.10Suebayasi  /* Read-only sections, merged into text segment: */
101.10Suebayasi  .text :
111.10Suebayasi  AT (ADDR(.text) & 0x0fffffff)
121.10Suebayasi  {
131.10Suebayasi    *(.text)
141.10Suebayasi    *(.text.*)
151.10Suebayasi    *(.stub)
161.10Suebayasi  } =0
171.10Suebayasi  _etext = . ;
181.10Suebayasi  PROVIDE (etext = .) ;
191.2Schristos
201.10Suebayasi  .rodata :
211.10Suebayasi  AT (LOADADDR(.text) + (ADDR(.rodata) - ADDR(.text)))
221.10Suebayasi  {
231.10Suebayasi    *(.rodata)
241.10Suebayasi    *(.rodata.*)
251.10Suebayasi  }
261.9Suebayasi
271.10Suebayasi  /* Adjust the address for the data segment.  We want to adjust up to
281.10Suebayasi     the same address within the page on the next page up.  */
291.10Suebayasi  . = ALIGN(0x100000) + (. & (0x100000 - 1));
301.10Suebayasi  __data_start = . ;
311.10Suebayasi  .data :
321.10Suebayasi  AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
331.10Suebayasi  {
341.10Suebayasi    *(.data)
351.10Suebayasi  }
361.8Suebayasi
371.10Suebayasi  . = ALIGN(64);	/* COHERENCY_UNIT */
381.10Suebayasi  .data.cacheline_aligned :
391.10Suebayasi  AT (LOADADDR(.text) + (ADDR(.data.cacheline_aligned) - ADDR(.text)))
401.10Suebayasi  {
411.10Suebayasi    *(.data.cacheline_aligned)
421.10Suebayasi  }
431.10Suebayasi  . = ALIGN(64);	/* COHERENCY_UNIT */
441.10Suebayasi  .data.read_mostly :
451.10Suebayasi  AT (LOADADDR(.text) + (ADDR(.data.read_mostly) - ADDR(.text)))
461.10Suebayasi  {
471.10Suebayasi    *(.data.read_mostly)
481.10Suebayasi  }
491.10Suebayasi  . = ALIGN(64);	/* COHERENCY_UNIT */
501.8Suebayasi
511.10Suebayasi  _edata = . ;
521.10Suebayasi  PROVIDE (edata = .) ;
531.10Suebayasi  __bss_start = . ;
541.10Suebayasi  .bss :
551.10Suebayasi  AT (LOADADDR(.text) + (ADDR(.bss) - ADDR(.text)))
561.10Suebayasi  {
571.10Suebayasi    *(.bss)
581.10Suebayasi    *(.bss.*)
591.10Suebayasi    *(COMMON)
601.10Suebayasi    . = ALIGN(64 / 8);
611.10Suebayasi  }
621.10Suebayasi  . = ALIGN(64 / 8);
631.2Schristos  _end = . ;
641.2Schristos  PROVIDE (end = .) ;
651.2Schristos  .note.netbsd.ident :
661.1Sfvdl  {
671.2Schristos    KEEP(*(.note.netbsd.ident));
681.1Sfvdl  }
691.1Sfvdl}
70