kern.ldscript revision 1.3
11.3Suwe/*	$NetBSD: kern.ldscript,v 1.3 2003/06/11 21:49:40 uwe Exp $	*/
21.1Sthorpej
31.2SthorpejOUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
41.2Sthorpej	      "elf32-littlearm")
51.1SthorpejOUTPUT_ARCH(arm)
61.1SthorpejENTRY(KERNEL_BASE_phys)
71.1SthorpejSECTIONS
81.1Sthorpej{
91.1Sthorpej  KERNEL_BASE_phys = 0x0000c000;
101.1Sthorpej  KERNEL_BASE_virt = 0xf000c000;
111.1Sthorpej
121.1Sthorpej  /* Kernel start: */
131.1Sthorpej  .start (KERNEL_BASE_phys) :
141.1Sthorpej  {
151.1Sthorpej    *(.start)
161.1Sthorpej  } =0
171.1Sthorpej
181.1Sthorpej  /* Read-only sections, merged into text segment: */
191.1Sthorpej  .text (KERNEL_BASE_virt + SIZEOF(.start)) :
201.1Sthorpej  AT (LOADADDR(.start) + SIZEOF(.start))
211.1Sthorpej  {
221.1Sthorpej    *(.text)
231.1Sthorpej    *(.text.*)
241.1Sthorpej    *(.stub)
251.1Sthorpej    *(.glue_7t) *(.glue_7)
261.1Sthorpej    *(.rodata) *(.rodata.*)
271.1Sthorpej  } =0
281.1Sthorpej  PROVIDE (__etext = .);
291.1Sthorpej  PROVIDE (_etext = .);
301.1Sthorpej  PROVIDE (etext = .);
311.1Sthorpej  /* Adjust the address for the data segment to start on the next page
321.1Sthorpej     boundary.  */
331.1Sthorpej  . = ALIGN(0x8000);
341.1Sthorpej  .data    :
351.3Suwe  AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
361.1Sthorpej  {
371.1Sthorpej    __data_start = . ;
381.1Sthorpej    *(.data)
391.1Sthorpej    *(.data.*)
401.1Sthorpej  }
411.3Suwe  .sdata     :
421.3Suwe  AT (LOADADDR(.data) + (ADDR(.sdata) - ADDR(.data)))
431.1Sthorpej  {
441.1Sthorpej    *(.sdata) 
451.1Sthorpej    *(.sdata.*)
461.1Sthorpej  }
471.1Sthorpej  _edata = .;
481.1Sthorpej  PROVIDE (edata = .);
491.1Sthorpej  __bss_start = .;
501.1Sthorpej  __bss_start__ = .;
511.1Sthorpej  .sbss      :
521.1Sthorpej  {
531.1Sthorpej    PROVIDE (__sbss_start = .);
541.1Sthorpej    PROVIDE (___sbss_start = .);
551.1Sthorpej    *(.dynsbss)
561.1Sthorpej    *(.sbss)
571.1Sthorpej    *(.sbss.*)
581.1Sthorpej    *(.scommon)
591.1Sthorpej    PROVIDE (__sbss_end = .);
601.1Sthorpej    PROVIDE (___sbss_end = .);
611.1Sthorpej  }
621.1Sthorpej  .bss       :
631.1Sthorpej  {
641.1Sthorpej   *(.dynbss)
651.1Sthorpej   *(.bss)
661.1Sthorpej   *(.bss.*)
671.1Sthorpej   *(COMMON)
681.1Sthorpej   /* Align here to ensure that the .bss section occupies space up to
691.1Sthorpej      _end.  Align after .bss to ensure correct alignment even if the
701.1Sthorpej      .bss section disappears because there are no input sections.  */
711.1Sthorpej   . = ALIGN(32 / 8);
721.1Sthorpej  }
731.1Sthorpej  . = ALIGN(32 / 8);
741.1Sthorpej  _end = .;
751.1Sthorpej  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
761.1Sthorpej  PROVIDE (end = .);
771.1Sthorpej}
78