MEMORY
{
  /*
  For debugging, use 8M rom, 8M prog, 16M ram.
  */
  rom   (rx)  : ORIGIN = 0x20000000, LENGTH = 0x0800000
  prog  (rx)  : ORIGIN = 0x20800000, LENGTH = 0x0800000
  ram   (!rx) : ORIGIN = 0x10000000, LENGTH = 0x1000000
}

_manifest_code_start = _stext - ORIGIN(rom);
/*
 * The end of the .text section relative to the beginning of the associated slot
 * for use in the manifest.
 */
_manifest_code_end = _etext - ORIGIN(rom);
/*
 * The location of the entry point relative to the beginning of the associated
 * slot for use in the manifest.
 */
_manifest_entry_point = _start - ORIGIN(rom);

MPU_MIN_ALIGN = 1K;
SECTIONS {
    /*
     * The flash header needs to match what the boot ROM for OpenTitan is
     * expecting.  At the moment, it contains only the entry point, but it
     * will eventually contain the signature -- and (hopefully?!) some
     * versioning information to make it slightly easier to debug when the
     * boot ROM and Tock are out of sync with respect to the definition...
     */
    .manifest ORIGIN(rom) : {
      . = . + 884; /* magic # comes from manifest.h */
      LONG(_manifest_code_start);
      LONG(_manifest_code_end);
      LONG(_manifest_entry_point);
      . = ALIGN(1024);
    } > rom

    .flash_header : {
        LONG(_stext)
    } > rom
}

INCLUDE kernel_layout.ld
