Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.9
      1 /*	$NetBSD: kern.ldscript,v 1.9 2015/08/22 23:19:55 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   PROVIDE (__etext = .);
     25   PROVIDE (_etext = .);
     26   PROVIDE (etext = .);
     27   /* Adjust the address for the data segment to start on the next page
     28      boundary.  */
     29   . = ALIGN(0x8000);
     30   .data    :
     31   {
     32     __data_start = . ;
     33     *(.data)
     34     *(.data.*)
     35   }
     36   .sdata     :
     37   {
     38     *(.sdata)
     39     *(.sdata.*)
     40   }
     41   _edata = .;
     42   PROVIDE (edata = .);
     43   __bss_start = .;
     44   __bss_start__ = .;
     45   .sbss      :
     46   {
     47     PROVIDE (__sbss_start = .);
     48     PROVIDE (___sbss_start = .);
     49     *(.dynsbss)
     50     *(.sbss)
     51     *(.sbss.*)
     52     *(.scommon)
     53     PROVIDE (__sbss_end = .);
     54     PROVIDE (___sbss_end = .);
     55   }
     56   .bss       :
     57   {
     58     *(.dynbss)
     59     *(.bss)
     60     *(.bss.*)
     61     *(COMMON)
     62     /* Align here to ensure that the .bss section occupies space up to
     63        _end.  Align after .bss to ensure correct alignment even if the
     64        .bss section disappears because there are no input sections.  */
     65     . = ALIGN(32 / 8);
     66   }
     67   . = ALIGN(32 / 8);
     68   _end = .;
     69   _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
     70   PROVIDE (end = .);
     71 }
     72 SECTIONS
     73 {
     74   KERNEL_BASE_phys = 0x0000c000;
     75   KERNEL_BASE_virt = 0xf000c000;
     76 
     77   .start (KERNEL_BASE_phys) :
     78   {
     79     *(.start)
     80   } =0
     81 
     82   .text (KERNEL_BASE_virt + SIZEOF(.start)) :
     83   AT (LOADADDR(.start) + SIZEOF(.start))
     84   {
     85     *(.text)
     86   } =0
     87 
     88   .data :
     89   AT (LOADADDR(.text) + (ADDR(.data) - ADDR(.text)))
     90   {
     91     *(.data)
     92   }
     93 }
     94