/*      $NetBSD: ldscript.zaurus,v 1.13 2023/02/11 22:42:20 mlelstv Exp $       */

ENTRY(KERNEL_BASE_phys)
SECTIONS
{
 KERNEL_BASE_phys = @KERNEL_BASE_PHYS@;
 KERNEL_BASE_virt = @KERNEL_BASE_VIRT@;

 /* Kernel start: */
 .start (KERNEL_BASE_phys) :
 {
   *(.start)
 }

 /* Read-only sections, merged into text segment: */
 .text (KERNEL_BASE_virt + SIZEOF(.start)) :
 AT (LOADADDR(.start) + SIZEOF(.start))
 {
   *(.text)
   *(.text.*)
   *(.stub)
   *(.glue_7t) *(.glue_7)
   *(.rodata) *(.rodata.*)
 }
 PROVIDE (__etext = .);
 PROVIDE (_etext = .);
 PROVIDE (etext = .);
 /* Adjust the address for the data segment to start on the next page
    boundary.  */
 . = ALIGN(0x8000);
 .data    :
 {
   __data_start = . ;
   *(.data)
   *(.data.*)
 }
 .sdata     :
 {
   *(.sdata)
   *(.sdata.*)
 }
 _edata = .;
 PROVIDE (edata = .);
 __bss_start = .;
 __bss_start__ = .;
 .sbss      :
 {
   PROVIDE (__sbss_start = .);
   PROVIDE (___sbss_start = .);
   *(.dynsbss)
   *(.sbss)
   *(.sbss.*)
   *(.scommon)
   PROVIDE (__sbss_end = .);
   PROVIDE (___sbss_end = .);
 }
 .bss       :
 {
   *(.dynbss)
   *(.bss)
   *(.bss.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(32 / 8);
 }
 . = ALIGN(32 / 8);
 _end = .;
 _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
 PROVIDE (end = .);
 .note.netbsd.ident :
 {
   KEEP(*(.note.netbsd.ident));
 }
 /DISCARD/ : {
   *(.eh_frame_hdr)
   *(.eh_frame)
   *(.SUNW_ctf)
 }
}