xref: /netbsd-src/sys/arch/i386/conf/kern.ldscript (revision 6a493d6bc668897c91594964a732d38505b70cbb)
1/*	$NetBSD: kern.ldscript,v 1.9 2012/09/23 01:01:17 chs Exp $	*/
2
3OUTPUT_FORMAT("elf32-i386", "elf32-i386",
4	      "elf32-i386")
5OUTPUT_ARCH(i386)
6ENTRY(_start)
7SECTIONS
8{
9   /* Read-only sections, merged into text segment: */
10   .text :
11   AT (ADDR(.text) & 0x0fffffff)
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(0x1000) + (. & (0x1000 - 1));
30   __data_start = . ;
31   .data :
32   AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
33   {
34     *(.data)
35   }
36   . = ALIGN(64);	/* COHERENCY_UNIT */
37   .data.cacheline_aligned :
38   AT (LOADADDR(.text) + (ADDR(.data.cacheline_aligned) - ADDR(.text)))
39   {
40     *(.data.cacheline_aligned)
41   }
42   . = ALIGN(64);	/* COHERENCY_UNIT */
43   .data.read_mostly :
44   AT (LOADADDR(.text) + (ADDR(.data.read_mostly) - ADDR(.text)))
45   {
46     *(.data.read_mostly)
47   }
48   . = ALIGN(64);	/* COHERENCY_UNIT */
49   _edata = . ;
50   PROVIDE (edata = .) ;
51   __bss_start = . ;
52   .bss :
53   AT (LOADADDR(.text) + (ADDR(.bss) - ADDR(.text)))
54   {
55     *(.bss)
56     *(.bss.*)
57     *(COMMON)
58     . = ALIGN(32 / 8);
59   }
60   . = ALIGN(32 / 8);
61  _end = . ;
62  PROVIDE (end = .) ;
63  .note.netbsd.ident :
64  {
65    KEEP(*(.note.netbsd.ident));
66  }
67}
68