1/*	$NetBSD: kern.ldscript,v 1.4 2007/10/18 15:28:33 yamt Exp $	*/
2
3OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
4	      "elf64-x86-64")
5OUTPUT_ARCH(i386:x86-64)
6ENTRY(_start)
7SECTIONS
8{
9   /* Read-only sections, merged into text segment: */
10   .text :
11   AT (ADDR(.text))
12   {
13     *(.text)
14     *(.text.*)
15     *(.stub)
16   } =0
17   _etext = . ;
18   PROVIDE (etext = .) ;
19
20   .rodata :
21   AT (LOADADDR(.text) + (ADDR(.rodata) - ADDR(.text)))
22   {
23     *(.rodata)
24     *(.rodata.*)
25   }
26 
27   /* Adjust the address for the data segment.  We want to adjust up to
28      the same address within the page on the next page up.  */
29   . = ALIGN(0x100000) + (. & (0x100000 - 1));
30   __data_start = . ;
31   .data :
32   AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
33   {
34     *(.data)
35   }
36
37   . = ALIGN(64);	/* COHERENCY_UNIT */
38   .data.cacheline_aligned :
39   AT (LOADADDR(.text) + (ADDR(.data.cacheline_aligned) - ADDR(.text)))
40   {
41     *(.data.cacheline_aligned)
42   }
43   . = ALIGN(64);	/* COHERENCY_UNIT */
44   .data.read_mostly :
45   AT (LOADADDR(.text) + (ADDR(.data.read_mostly) - ADDR(.text)))
46   {
47     *(.data.read_mostly)
48   }
49   . = ALIGN(64);	/* COHERENCY_UNIT */
50
51   _edata = . ;
52   PROVIDE (edata = .) ;
53   __bss_start = . ;
54   .bss :
55   AT (LOADADDR(.text) + (ADDR(.bss) - ADDR(.text)))
56   {
57     *(.bss)
58     *(.bss.*)
59     *(COMMON)
60     . = ALIGN(64 / 8);
61   }
62   . = ALIGN(64 / 8);
63  _end = . ;
64  PROVIDE (end = .) ;
65  .note.netbsd.ident :
66  {
67    KEEP(*(.note.netbsd.ident));
68  }
69}
70