kern.ldscript revision 1.9
11.9Suebayasi/*	$NetBSD: kern.ldscript,v 1.9 2015/08/20 06:48:25 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.2Schristos   /* Read-only sections, merged into text segment: */
101.2Schristos   .text :
111.6Sjakllsch   AT (ADDR(.text) & 0x0fffffff)
121.2Schristos   {
131.2Schristos     *(.text)
141.2Schristos     *(.text.*)
151.2Schristos     *(.stub)
161.2Schristos   } =0
171.2Schristos   _etext = . ;
181.2Schristos   PROVIDE (etext = .) ;
191.2Schristos
201.4Syamt   .rodata :
211.4Syamt   AT (LOADADDR(.text) + (ADDR(.rodata) - ADDR(.text)))
221.4Syamt   {
231.4Syamt     *(.rodata)
241.4Syamt     *(.rodata.*)
251.4Syamt   }
261.9Suebayasi
271.2Schristos   /* Adjust the address for the data segment.  We want to adjust up to
281.2Schristos      the same address within the page on the next page up.  */
291.2Schristos   . = ALIGN(0x100000) + (. & (0x100000 - 1));
301.4Syamt   __data_start = . ;
311.2Schristos   .data :
321.2Schristos   AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
331.2Schristos   {
341.2Schristos     *(.data)
351.8Suebayasi   }
361.8Suebayasi
371.8Suebayasi   . = ALIGN(64);	/* COHERENCY_UNIT */
381.8Suebayasi   .data.cacheline_aligned :
391.8Suebayasi   AT (LOADADDR(.text) + (ADDR(.data.cacheline_aligned) - ADDR(.text)))
401.8Suebayasi   {
411.5Smjf     *(.data.cacheline_aligned)
421.8Suebayasi   }
431.8Suebayasi   . = ALIGN(64);	/* COHERENCY_UNIT */
441.8Suebayasi   .data.read_mostly :
451.8Suebayasi   AT (LOADADDR(.text) + (ADDR(.data.read_mostly) - ADDR(.text)))
461.8Suebayasi   {
471.5Smjf     *(.data.read_mostly)
481.5Smjf   }
491.5Smjf   . = ALIGN(64);	/* COHERENCY_UNIT */
501.8Suebayasi
511.2Schristos   _edata = . ;
521.2Schristos   PROVIDE (edata = .) ;
531.2Schristos   __bss_start = . ;
541.2Schristos   .bss :
551.2Schristos   AT (LOADADDR(.text) + (ADDR(.bss) - ADDR(.text)))
561.2Schristos   {
571.2Schristos     *(.bss)
581.2Schristos     *(.bss.*)
591.2Schristos     *(COMMON)
601.2Schristos     . = ALIGN(64 / 8);
611.2Schristos   }
621.2Schristos   . = 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