xref: /netbsd/sys/arch/evbarm/conf/ldscript.evbarm (revision c4a72b64)
1/*	$NetBSD: ldscript.evbarm,v 1.1 2002/11/20 18:04:55 bsh Exp $	*/
2
3OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
4	      "elf32-littlearm")
5OUTPUT_ARCH(arm)
6ENTRY(KERNEL_BASE_phys)
7SECTIONS
8{
9  KERNEL_BASE_phys = @KERNEL_BASE_PHYS@;
10  KERNEL_BASE_virt = @KERNEL_BASE_VIRT@;
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  PROVIDE (__etext = .);
29  PROVIDE (_etext = .);
30  PROVIDE (etext = .);
31  /* Adjust the address for the data segment to start on the next page
32     boundary.  */
33  . = ALIGN(0x8000);
34  .data    :
35  AT ((LOADADDR(.text) + SIZEOF(.text) + (0x8000 - 1)) & ~(0x8000 - 1))
36  {
37    __data_start = . ;
38    *(.data)
39    *(.data.*)
40  }
41  .sdata     :
42  AT (LOADADDR(.data) + SIZEOF(.data))
43  {
44    *(.sdata)
45    *(.sdata.*)
46  }
47  _edata = .;
48  PROVIDE (edata = .);
49  __bss_start = .;
50  __bss_start__ = .;
51  .sbss      :
52  {
53    PROVIDE (__sbss_start = .);
54    PROVIDE (___sbss_start = .);
55    *(.dynsbss)
56    *(.sbss)
57    *(.sbss.*)
58    *(.scommon)
59    PROVIDE (__sbss_end = .);
60    PROVIDE (___sbss_end = .);
61  }
62  .bss       :
63  {
64   *(.dynbss)
65   *(.bss)
66   *(.bss.*)
67   *(COMMON)
68   /* Align here to ensure that the .bss section occupies space up to
69      _end.  Align after .bss to ensure correct alignment even if the
70      .bss section disappears because there are no input sections.  */
71   . = ALIGN(32 / 8);
72  }
73  . = ALIGN(32 / 8);
74  _end = .;
75  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
76  PROVIDE (end = .);
77}
78