/*      $NetBSD: kern.ldscript.Xen,v 1.18 2022/01/24 00:15:09 maya Exp $        */

#include "assym.h"

__PAGE_SIZE = 0x1000 ;

ENTRY(_start)
SECTIONS
{
       .text : AT (ADDR(.text))
       {
               *(.text)
               *(.text.*)
               *(.stub)
               . = ALIGN(__PAGE_SIZE);
       } :main =0xCC
       _etext = . ;
       PROVIDE (etext = .) ;

       . = ALIGN(__PAGE_SIZE);

       __rodata_start = . ;

       .rodata.hotpatch :
       {
               __rodata_hotpatch_start = . ;
               *(.rodata.hotpatch)
               __rodata_hotpatch_end = . ;
       }

       .rodata :
       {
               *(.rodata)
               *(.rodata.*)
               . = ALIGN(COHERENCY_UNIT);
               __CTOR_LIST__ = .;
               *(.ctors)
               __CTOR_END__ = .;
       }

       . = ALIGN(__PAGE_SIZE);

       __data_start = . ;
       .data :
       {
               *(.data)
       }

       . = ALIGN(COHERENCY_UNIT);
       .data.cacheline_aligned :
       {
               *(.data.cacheline_aligned)
       }
       . = ALIGN(COHERENCY_UNIT);
       .data.read_mostly :
       {
               *(.data.read_mostly)
       }
       . = ALIGN(COHERENCY_UNIT);

       _edata = . ;
       PROVIDE (edata = .) ;
       __bss_start = . ;
       .bss :
       {
               *(.bss)
               *(.bss.*)
               *(COMMON)
               . = ALIGN(__PAGE_SIZE);
       }

       . = ALIGN(__PAGE_SIZE);

       /* End of the kernel image */
       __kernel_end = . ;

       _end = . ;
       PROVIDE (end = .) ;
       .note.netbsd.ident :
       {
               KEEP(*(.note.netbsd.ident));
       }
       .note.Xen :
       {
               KEEP(*(.note.Xen));
       } :notes
}

PHDRS
{
       main PT_LOAD;
       notes PT_NOTE;
}