Skip to content

Commit

Permalink
q800: add ESCC alias at 0xc000
Browse files Browse the repository at this point in the history
Tests on real Q800 hardware show that the ESCC is addressable at multiple locations
within the ESCC memory region - at least 0xc000, 0xc020 (as expected by the MacOS
toolbox ROM) and 0xc040.

All released NetBSD kernels before 10 use the 0xc000 address which causes a fatal
error when running the MacOS booter. Add a single memory region alias at 0xc000
to enable NetBSD kernels to start booting under QEMU.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-ID: <20231004083806.757242-19-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
  • Loading branch information
mcayland authored and vivier committed Oct 6, 2023
1 parent c698b0c commit 7685fc2
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
6 changes: 6 additions & 0 deletions hw/m68k/q800.c
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,12 @@ static void q800_machine_init(MachineState *machine)
memory_region_add_subregion(&m->macio, SCC_BASE - IO_BASE,
sysbus_mmio_get_region(sysbus, 0));

/* Create alias for NetBSD */
memory_region_init_alias(&m->escc_alias, OBJECT(machine), "escc-alias",
sysbus_mmio_get_region(sysbus, 0), 0, 0x8);
memory_region_add_subregion(&m->macio, SCC_BASE - IO_BASE - 0x20,
&m->escc_alias);

/* SCSI */

object_initialize_child(OBJECT(machine), "esp", &m->esp,
Expand Down
1 change: 1 addition & 0 deletions include/hw/m68k/q800.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ struct Q800MachineState {
MemoryRegion macio;
MemoryRegion macio_alias;
MemoryRegion machine_id;
MemoryRegion escc_alias;
};

#define TYPE_Q800_MACHINE MACHINE_TYPE_NAME("q800")
Expand Down

0 comments on commit 7685fc2

Please sign in to comment.