muddle/ports/f256/f256.ld
2024-02-08 20:47:28 -06:00

45 lines
1,012 B
Text

/* F256 Linker Script */
/* fake C Stack */
PROVIDE(__stack = 0xC000);
/* entry point to my program */
PROVIDE(__f256_start = 0x300);
/* swappable block address */
PROVIDE(__SLOT_ADDR = 0xC000);
/* f256k uses first 16 bytes of ZP for mmu control? */
__rc0 = 0x10;
INCLUDE imag-regs.ld
ASSERT(__rc0 == 0x10, "Inconsistent zero page map.")
ASSERT(__rc31 == 0x2f, "Inconsistent zero page map.")
MEMORY {
/* kernel uses 0xf0-0xff for parameter passing */
zp : ORIGIN = __rc31 + 1, LENGTH = 0xF0 - (__rc31 + 1)
ram (rw) : ORIGIN = __f256_start, LENGTH = 0xC000-__f256_start
}
REGION_ALIAS("c_writeable", ram)
REGION_ALIAS("c_readonly", ram)
SECTIONS {
INCLUDE c.ld
}
OUTPUT_FORMAT {
BYTE(0x5A) /* pgZ */
/* ram segment */
SHORT(ORIGIN(ram)) /* where to load it, 24 bits */
BYTE(0x00)
SHORT(__bss_start-ORIGIN(ram)) /* size to load */
BYTE(0x00)
TRIM(ram)
/* Launch the program, at _start */
SHORT(_start)
LONG(0)
}