xref: /netbsd-src/sys/arch/netwinder/conf/kern.ldscript (revision b7b7574d3bf8eeb51a1fa3977b59142ec6434a55)
1/*	$NetBSD: kern.ldscript,v 1.4 2014/01/30 15:36:44 matt Exp $	*/
2
3OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
4	      "elf32-littlearm")
5OUTPUT_ARCH(arm)
6ENTRY(KERNEL_BASE_phys)
7SECTIONS
8{
9  KERNEL_BASE_phys = 0x0000c000;
10  KERNEL_BASE_virt = 0xf000c000;
11
12  /* Kernel start: */
13  .start (KERNEL_BASE_phys) :
14  {
15    *(.start)
16  } =0
17
18  /* Read-only sections, merged into text segment: */
19  .text (KERNEL_BASE_virt + SIZEOF(.start)) :
20  AT (LOADADDR(.start) + SIZEOF(.start))
21  {
22    *(.text)
23    *(.text.*)
24    *(.stub)
25    *(.glue_7t) *(.glue_7)
26    *(.rodata) *(.rodata.*)
27  } =0
28  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
29  PROVIDE (__exidx_start = .);
30  .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
31  PROVIDE (__exidx_end = .);
32  PROVIDE (__etext = .);
33  PROVIDE (_etext = .);
34  PROVIDE (etext = .);
35  /* Adjust the address for the data segment to start on the next page
36     boundary.  */
37  . = ALIGN(0x8000);
38  .data    :
39  AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
40  {
41    __data_start = . ;
42    *(.data)
43    *(.data.*)
44  }
45  .sdata     :
46  AT (LOADADDR(.data) + (ADDR(.sdata) - ADDR(.data)))
47  {
48    *(.sdata)
49    *(.sdata.*)
50  }
51  _edata = .;
52  PROVIDE (edata = .);
53  __bss_start = .;
54  __bss_start__ = .;
55  .sbss      :
56  {
57    PROVIDE (__sbss_start = .);
58    PROVIDE (___sbss_start = .);
59    *(.dynsbss)
60    *(.sbss)
61    *(.sbss.*)
62    *(.scommon)
63    PROVIDE (__sbss_end = .);
64    PROVIDE (___sbss_end = .);
65  }
66  .bss       :
67  {
68   *(.dynbss)
69   *(.bss)
70   *(.bss.*)
71   *(COMMON)
72   /* Align here to ensure that the .bss section occupies space up to
73      _end.  Align after .bss to ensure correct alignment even if the
74      .bss section disappears because there are no input sections.  */
75   . = ALIGN(32 / 8);
76  }
77  . = ALIGN(32 / 8);
78  _end = .;
79  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
80  PROVIDE (end = .);
81}
82