static int pci_irq_index;
static PCIBus *first_bus;
-static void pcibus_save(QEMUFile *f, void *opaque)
+static int pcibus_load(QEMUFile *f, void *opaque, int version_id)
{
- PCIBus *bus = (PCIBus *)opaque;
- int i;
-
- qemu_put_be32(f, bus->nirq);
- for (i = 0; i < bus->nirq; i++)
- qemu_put_be32(f, bus->irq_count[i]);
-}
-
-static int pcibus_load(QEMUFile *f, void *opaque, int version_id)
-{
- PCIBus *bus = (PCIBus *)opaque;
int i, nirq;
if (version_id != 1)
return -EINVAL;
nirq = qemu_get_be32(f);
- if (bus->nirq != nirq) {
- fprintf(stderr, "pcibus_load: nirq mismatch: src=%d dst=%d\n",
- nirq, bus->nirq);
- return -EINVAL;
- }
-
for (i = 0; i < nirq; i++)
- bus->irq_count[i] = qemu_get_be32(f);
+ qemu_get_be32(f);
return 0;
}
bus->devfn_min = devfn_min;
bus->nirq = nirq;
first_bus = bus;
- register_savevm("PCIBUS", nbus++, 1, pcibus_save, pcibus_load, bus);
+ register_savevm("PCIBUS", nbus++, 1, NULL, pcibus_load, bus);
return bus;
}
if (version_id >= 2)
for (i = 0; i < 4; i ++)
- s->irq_state[i] = qemu_get_be32(f);
+ pci_set_irq(s, i, qemu_get_be32(f));
return 0;
}