/*      $NetBSD: kern.ldscript,v 1.2 2018/08/17 20:16:07 reinoud Exp $  */

#include "assym.h"

__PAGE_SIZE = 0x1000 ;

ENTRY(_start)
SECTIONS
{
       /* Read-only sections, merged into text segment: */
       .text :
       {
               . = ALIGN(__PAGE_SIZE);
               *(.text.user)
               . = ALIGN(__PAGE_SIZE);
               *(.text)
               *(.text.*)
               *(.stub)
               . = ALIGN(__PAGE_SIZE);
       } =0xCC

       _etext = . ;
       PROVIDE (etext = .) ;

       . = ALIGN(__PAGE_SIZE);
       .rodata :
       {
               *(.rodata)
               *(.rodata.*)
       }

       /*
        * Adjust the address for the data segment.  We want to adjust up to
        * the same address within the page on the next page up.
        */
       . = 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);
       _end = . ;
       PROVIDE (end = .) ;

       /*
        * .note.netbsd.ident :
        * {
        *      KEEP(*(.note.netbsd.ident));
        * }
        */
}