kern.ldscript revision 1.7
11.5Suebayasi/*	$NetBSD: kern.ldscript,v 1.7 2015/08/21 04:13:23 uebayasi 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 start: */
101.7Suebayasi  .start :
111.1Sthorpej  {
121.1Sthorpej    *(.start)
131.7Suebayasi  }
141.1Sthorpej
151.1Sthorpej  /* Read-only sections, merged into text segment: */
161.7Suebayasi  .text :
171.1Sthorpej  {
181.1Sthorpej    *(.text)
191.1Sthorpej    *(.text.*)
201.1Sthorpej    *(.stub)
211.1Sthorpej    *(.glue_7t) *(.glue_7)
221.1Sthorpej    *(.rodata) *(.rodata.*)
231.7Suebayasi  }
241.4Smatt  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
251.4Smatt  PROVIDE (__exidx_start = .);
261.4Smatt  .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
271.4Smatt  PROVIDE (__exidx_end = .);
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.1Sthorpej  {
361.1Sthorpej    __data_start = . ;
371.1Sthorpej    *(.data)
381.1Sthorpej    *(.data.*)
391.1Sthorpej  }
401.3Suwe  .sdata     :
411.1Sthorpej  {
421.5Suebayasi    *(.sdata)
431.1Sthorpej    *(.sdata.*)
441.1Sthorpej  }
451.1Sthorpej  _edata = .;
461.1Sthorpej  PROVIDE (edata = .);
471.1Sthorpej  __bss_start = .;
481.1Sthorpej  __bss_start__ = .;
491.1Sthorpej  .sbss      :
501.1Sthorpej  {
511.1Sthorpej    PROVIDE (__sbss_start = .);
521.1Sthorpej    PROVIDE (___sbss_start = .);
531.1Sthorpej    *(.dynsbss)
541.1Sthorpej    *(.sbss)
551.1Sthorpej    *(.sbss.*)
561.1Sthorpej    *(.scommon)
571.1Sthorpej    PROVIDE (__sbss_end = .);
581.1Sthorpej    PROVIDE (___sbss_end = .);
591.1Sthorpej  }
601.1Sthorpej  .bss       :
611.1Sthorpej  {
621.6Suebayasi    *(.dynbss)
631.6Suebayasi    *(.bss)
641.6Suebayasi    *(.bss.*)
651.6Suebayasi    *(COMMON)
661.6Suebayasi    /* Align here to ensure that the .bss section occupies space up to
671.6Suebayasi       _end.  Align after .bss to ensure correct alignment even if the
681.6Suebayasi       .bss section disappears because there are no input sections.  */
691.6Suebayasi    . = ALIGN(32 / 8);
701.1Sthorpej  }
711.1Sthorpej  . = ALIGN(32 / 8);
721.1Sthorpej  _end = .;
731.1Sthorpej  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
741.1Sthorpej  PROVIDE (end = .);
751.1Sthorpej}
761.7SuebayasiSECTIONS
771.7Suebayasi{
781.7Suebayasi  KERNEL_BASE_phys = 0x0000c000;
791.7Suebayasi  KERNEL_BASE_virt = 0xf000c000;
801.7Suebayasi
811.7Suebayasi  .start (KERNEL_BASE_phys) :
821.7Suebayasi  {
831.7Suebayasi    *(.start)
841.7Suebayasi  } =0
851.7Suebayasi
861.7Suebayasi  .text (KERNEL_BASE_virt + SIZEOF(.start)) :
871.7Suebayasi  AT (LOADADDR(.start) + SIZEOF(.start))
881.7Suebayasi  {
891.7Suebayasi    *(.text)
901.7Suebayasi  } =0
911.7Suebayasi}
92