Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.7
      1 /*	$NetBSD: kern.ldscript,v 1.7 2015/08/21 04:13:23 uebayasi Exp $	*/
      2 
      3 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
      4 	      "elf32-littlearm")
      5 OUTPUT_ARCH(arm)
      6 ENTRY(KERNEL_BASE_phys)
      7 SECTIONS
      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   .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
     25   PROVIDE (__exidx_start = .);
     26   .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
     27   PROVIDE (__exidx_end = .);
     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   {
     36     __data_start = . ;
     37     *(.data)
     38     *(.data.*)
     39   }
     40   .sdata     :
     41   {
     42     *(.sdata)
     43     *(.sdata.*)
     44   }
     45   _edata = .;
     46   PROVIDE (edata = .);
     47   __bss_start = .;
     48   __bss_start__ = .;
     49   .sbss      :
     50   {
     51     PROVIDE (__sbss_start = .);
     52     PROVIDE (___sbss_start = .);
     53     *(.dynsbss)
     54     *(.sbss)
     55     *(.sbss.*)
     56     *(.scommon)
     57     PROVIDE (__sbss_end = .);
     58     PROVIDE (___sbss_end = .);
     59   }
     60   .bss       :
     61   {
     62     *(.dynbss)
     63     *(.bss)
     64     *(.bss.*)
     65     *(COMMON)
     66     /* Align here to ensure that the .bss section occupies space up to
     67        _end.  Align after .bss to ensure correct alignment even if the
     68        .bss section disappears because there are no input sections.  */
     69     . = ALIGN(32 / 8);
     70   }
     71   . = ALIGN(32 / 8);
     72   _end = .;
     73   _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
     74   PROVIDE (end = .);
     75 }
     76 SECTIONS
     77 {
     78   KERNEL_BASE_phys = 0x0000c000;
     79   KERNEL_BASE_virt = 0xf000c000;
     80 
     81   .start (KERNEL_BASE_phys) :
     82   {
     83     *(.start)
     84   } =0
     85 
     86   .text (KERNEL_BASE_virt + SIZEOF(.start)) :
     87   AT (LOADADDR(.start) + SIZEOF(.start))
     88   {
     89     *(.text)
     90   } =0
     91 }
     92