diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index 00fa8fd..1e2d174 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -1178,42 +1178,49 @@ static void vmsvga_init(struct vmsvga_state_s
*s, int vga_ram_size)
     vmsvga_reset(s);
 }

-static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
-                pcibus_t addr, pcibus_t size, int type)
-{
-    struct pci_vmsvga_state_s *d = (struct pci_vmsvga_state_s *) pci_dev;
-    struct vmsvga_state_s *s = &d->chip;
+static IOPortWriteFunc * const vmsvga_index_io_writes[] = {
+    NULL,
+    NULL,
+    vmsvga_index_write,
+};

-    register_ioport_read(addr + SVGA_IO_MUL * SVGA_INDEX_PORT,
-                    1, 4, vmsvga_index_read, s);
-    register_ioport_write(addr + SVGA_IO_MUL * SVGA_INDEX_PORT,
-                    1, 4, vmsvga_index_write, s);
-    register_ioport_read(addr + SVGA_IO_MUL * SVGA_VALUE_PORT,
-                    1, 4, vmsvga_value_read, s);
-    register_ioport_write(addr + SVGA_IO_MUL * SVGA_VALUE_PORT,
-                    1, 4, vmsvga_value_write, s);
-    register_ioport_read(addr + SVGA_IO_MUL * SVGA_BIOS_PORT,
-                    1, 4, vmsvga_bios_read, s);
-    register_ioport_write(addr + SVGA_IO_MUL * SVGA_BIOS_PORT,
-                    1, 4, vmsvga_bios_write, s);
-}
+static IOPortReadFunc * const vmsvga_index_io_reads[] = {
+    NULL,
+    NULL,
+    vmsvga_index_read,
+};
+
+static IOPortWriteFunc * const vmsvga_value_io_writes[] = {
+    NULL,
+    NULL,
+    vmsvga_value_write,
+};
+
+static IOPortReadFunc * const vmsvga_value_io_reads[] = {
+    NULL,
+    NULL,
+    vmsvga_value_read,
+};
+
+static IOPortWriteFunc * const vmsvga_bios_io_writes[] = {
+    NULL,
+    NULL,
+    vmsvga_bios_write,
+};
+
+static IOPortReadFunc * const vmsvga_bios_io_reads[] = {
+    NULL,
+    NULL,
+    vmsvga_bios_read,
+};

 static void pci_vmsvga_map_mem(PCIDevice *pci_dev, int region_num,
                 pcibus_t addr, pcibus_t size, int type)
 {
     struct pci_vmsvga_state_s *d = (struct pci_vmsvga_state_s *) pci_dev;
     struct vmsvga_state_s *s = &d->chip;
-    ram_addr_t iomemtype;

     s->vram_base = addr;
-#ifdef DIRECT_VRAM
-    iomemtype = cpu_register_io_memory(vmsvga_vram_read,
-                    vmsvga_vram_write, s);
-#else
-    iomemtype = s->vga.vram_offset | IO_MEM_RAM;
-#endif
-    cpu_register_physical_memory(s->vram_base, s->vga.vram_size,
-                    iomemtype);

     s->vga.map_addr = addr;
