diff options
author | Juan Quintela <quintela@redhat.com> | 2010-12-02 16:26:56 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-04-22 14:41:43 -0500 |
commit | 1fc7cee0b40e23d3d8a7384df69c07e5dd5954ed (patch) | |
tree | e751c02112e5a97f8a248cc9e887c3d6392b6b03 | |
parent | 8e470f8a77f6dfb0ca4bb087010b4bcd920a1d21 (diff) | |
download | qemu-1fc7cee0b40e23d3d8a7384df69c07e5dd5954ed.zip qemu-1fc7cee0b40e23d3d8a7384df69c07e5dd5954ed.tar.gz qemu-1fc7cee0b40e23d3d8a7384df69c07e5dd5954ed.tar.bz2 |
piix4: create PIIX4State
It only contains a PCIDevice by know, but it makes easy to use migration code
Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r-- | hw/piix4.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -30,10 +30,14 @@ PCIDevice *piix4_dev; +typedef struct PIIX4State { + PCIDevice dev; +} PIIX4State; + static void piix4_reset(void *opaque) { - PCIDevice *d = opaque; - uint8_t *pci_conf = d->config; + PIIX4State *d = opaque; + uint8_t *pci_conf = d->dev.config; pci_conf[0x04] = 0x07; // master, memory and I/O pci_conf[0x05] = 0x00; @@ -70,31 +74,32 @@ static void piix4_reset(void *opaque) static void piix_save(QEMUFile* f, void *opaque) { - PCIDevice *d = opaque; - pci_device_save(d, f); + PIIX4State *d = opaque; + pci_device_save(&d->dev, f); } static int piix_load(QEMUFile* f, void *opaque, int version_id) { - PCIDevice *d = opaque; + PIIX4State *d = opaque; if (version_id != 2) return -EINVAL; - return pci_device_load(d, f); + return pci_device_load(&d->dev, f); } -static int piix4_initfn(PCIDevice *d) +static int piix4_initfn(PCIDevice *dev) { + PIIX4State *d = DO_UPCAST(PIIX4State, dev, dev); uint8_t *pci_conf; - isa_bus_new(&d->qdev); - register_savevm(&d->qdev, "PIIX4", 0, 2, piix_save, piix_load, d); + isa_bus_new(&d->dev.qdev); + register_savevm(&d->dev.qdev, "PIIX4", 0, 2, piix_save, piix_load, d); - pci_conf = d->config; + pci_conf = d->dev.config; pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL); pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82371AB_0); // 82371AB/EB/MB PIIX4 PCI-to-ISA bridge pci_config_set_class(pci_conf, PCI_CLASS_BRIDGE_ISA); - piix4_dev = d; + piix4_dev = &d->dev; qemu_register_reset(piix4_reset, d); return 0; } @@ -111,7 +116,7 @@ static PCIDeviceInfo piix4_info[] = { { .qdev.name = "PIIX4", .qdev.desc = "ISA bridge", - .qdev.size = sizeof(PCIDevice), + .qdev.size = sizeof(PIIX4State), .qdev.no_user = 1, .no_hotplug = 1, .init = piix4_initfn, |