ldscript.elf revision 1.5
11.3Suebayasi/*	$NetBSD: ldscript.elf,v 1.5 2015/08/21 03:42:29 uebayasi Exp $	*/
21.1Schris
31.1SchrisOUTPUT_ARCH(arm)
41.1SchrisENTRY(KERNEL_BASE_phys)
51.1SchrisSECTIONS
61.1Schris{
71.1Schris  /* Kernel start: */
81.5Suebayasi  .start :
91.1Schris  {
101.1Schris    *(.start)
111.5Suebayasi  }
121.1Schris
131.1Schris  /* Read-only sections, merged into text segment: */
141.5Suebayasi  .text :
151.1Schris  {
161.1Schris    *(.text)
171.1Schris    *(.text.*)
181.1Schris    *(.stub)
191.1Schris    *(.glue_7t) *(.glue_7)
201.1Schris    *(.rodata) *(.rodata.*)
211.5Suebayasi  }
221.1Schris  PROVIDE (__etext = .);
231.1Schris  PROVIDE (_etext = .);
241.1Schris  PROVIDE (etext = .);
251.1Schris  /* Adjust the address for the data segment to start on the next page
261.1Schris     boundary.  */
271.1Schris  . = ALIGN(0x8000);
281.1Schris  .data    :
291.1Schris  {
301.1Schris    __data_start = . ;
311.1Schris    *(.data)
321.1Schris    *(.data.*)
331.1Schris  }
341.3Suebayasi  .sdata     :
351.1Schris  {
361.3Suebayasi    *(.sdata)
371.1Schris    *(.sdata.*)
381.1Schris  }
391.1Schris  _edata = .;
401.1Schris  PROVIDE (edata = .);
411.1Schris  __bss_start = .;
421.1Schris  __bss_start__ = .;
431.1Schris  .sbss      :
441.1Schris  {
451.1Schris    PROVIDE (__sbss_start = .);
461.1Schris    PROVIDE (___sbss_start = .);
471.1Schris    *(.dynsbss)
481.1Schris    *(.sbss)
491.1Schris    *(.sbss.*)
501.1Schris    *(.scommon)
511.1Schris    PROVIDE (__sbss_end = .);
521.1Schris    PROVIDE (___sbss_end = .);
531.1Schris  }
541.1Schris  .bss       :
551.1Schris  {
561.4Suebayasi    *(.dynbss)
571.4Suebayasi    *(.bss)
581.4Suebayasi    *(.bss.*)
591.4Suebayasi    *(COMMON)
601.4Suebayasi    /* Align here to ensure that the .bss section occupies space up to
611.4Suebayasi       _end.  Align after .bss to ensure correct alignment even if the
621.4Suebayasi       .bss section disappears because there are no input sections.  */
631.4Suebayasi    . = ALIGN(32 / 8);
641.1Schris  }
651.1Schris  . = ALIGN(32 / 8);
661.1Schris  _end = .;
671.1Schris  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
681.1Schris  PROVIDE (end = .);
691.1Schris}
701.5SuebayasiSECTIONS
711.5Suebayasi{
721.5Suebayasi  KERNEL_BASE_phys = 0xF0000000;
731.5Suebayasi  KERNEL_BASE_virt = 0xF0000000;
741.5Suebayasi
751.5Suebayasi  .start (KERNEL_BASE_phys) :
761.5Suebayasi  {
771.5Suebayasi    *(.start)
781.5Suebayasi  } =0
791.5Suebayasi
801.5Suebayasi  .text (KERNEL_BASE_virt + SIZEOF(.start)) :
811.5Suebayasi  AT (LOADADDR(.start) + SIZEOF(.start))
821.5Suebayasi  {
831.5Suebayasi    *(.text)
841.5Suebayasi  } =0
851.5Suebayasi}
86