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