This patch replaces all register_ioport* with portio_* or isa_register_portio_list. It permits to use the new Memory stuff like listener.
Signed-off-by: Julien Grall <julien.gr...@citrix.com> --- hw/pc.c | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 83a1b5b..6036393 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -592,6 +592,17 @@ int e820_add_entry(uint64_t address, uint64_t length, uint32_t type) return index; } +static const MemoryRegionPortio bochs_bios_portio_list[] = { + { 0x400, 2, 2, .write = bochs_bios_write, }, /* 0x400 */ + { 0x402, 2, 1, .write = bochs_bios_write, }, /* 0x402 */ + { 0x500, 1, 1, .write = bochs_bios_write, }, /* 0x500 */ + { 0x501, 1, 1, .write = bochs_bios_write, }, /* 0x501 */ + { 0x501, 2, 2, .write = bochs_bios_write, }, /* 0x501 */ + { 0x503, 1, 1, .write = bochs_bios_write, }, /* 0x503 */ + { 0x8900, 1, 1, .write = bochs_bios_write, }, /* 0x8900 */ + PORTIO_END_OF_LIST(), +}; + static void *bochs_bios_init(void) { void *fw_cfg; @@ -599,18 +610,11 @@ static void *bochs_bios_init(void) size_t smbios_len; uint64_t *numa_fw_cfg; int i, j; + PortioList *bochs_bios_port_list = g_new(PortioList, 1); - register_ioport_write(0x400, 1, 2, bochs_bios_write, NULL); - register_ioport_write(0x401, 1, 2, bochs_bios_write, NULL); - register_ioport_write(0x402, 1, 1, bochs_bios_write, NULL); - register_ioport_write(0x403, 1, 1, bochs_bios_write, NULL); - register_ioport_write(0x8900, 1, 1, bochs_bios_write, NULL); - - register_ioport_write(0x501, 1, 1, bochs_bios_write, NULL); - register_ioport_write(0x501, 1, 2, bochs_bios_write, NULL); - register_ioport_write(0x502, 1, 2, bochs_bios_write, NULL); - register_ioport_write(0x500, 1, 1, bochs_bios_write, NULL); - register_ioport_write(0x503, 1, 1, bochs_bios_write, NULL); + portio_list_init(bochs_bios_port_list, bochs_bios_portio_list, + NULL, "bosch-bios"); + portio_list_add(bochs_bios_port_list, get_system_io(), 0x0); fw_cfg = fw_cfg_init(BIOS_CFG_IOPORT, BIOS_CFG_IOPORT + 1, 0, 0); @@ -1077,6 +1081,12 @@ static void cpu_request_exit(void *opaque, int irq, int level) } } +static const MemoryRegionPortio pc_basic_portio_list[] = { + { 0x00, 1, 1, .write = ioport80_write, }, /* 0x80 */ + { 0x70, 1, 1, .write = ioportF0_write, }, /* 0xf0 */ + PORTIO_END_OF_LIST(), +}; + void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, ISADevice **rtc_state, ISADevice **floppy, @@ -1092,9 +1102,8 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, ISADevice *i8042, *port92, *vmmouse, *pit; qemu_irq *cpu_exit_irq; - register_ioport_write(0x80, 1, 1, ioport80_write, NULL); - - register_ioport_write(0xf0, 1, 1, ioportF0_write, NULL); + isa_register_portio_list(NULL, 0x80, pc_basic_portio_list, NULL, + "pc-basic"); /* * Check if an HPET shall be created. -- Julien Grall