{ PC98IDEState *s = opaque; s->cur_bus = &s->bus[s->bus1_selected_vmstate != 0]; return 0; } static const VMStateDescription vmstate_ide_pc98 = { .name = "pc98-ide", .version_id = 1, .minimum_version_id = 0, .minimum_version_id_old = 0, .pre_save = pc98_ide_pre_save, .post_load = pc98_ide_post_load, .fields = (VMStateField []) { VMSTATE_IDE_BUS(bus[0], PC98IDEState), VMSTATE_IDE_DRIVES(bus[0].ifs, PC98IDEState), VMSTATE_IDE_BUS(bus[1], PC98IDEState), VMSTATE_IDE_DRIVES(bus[1].ifs, PC98IDEState), VMSTATE_UINT8(bus1_selected_vmstate, PC98IDEState), VMSTATE_END_OF_LIST() } }; static int pc98_ide_initfn(ISADevice *dev) { PC98IDEState *s = DO_UPCAST(PC98IDEState, dev, dev); int i; ide_bus_new(&s->bus[0], &s->dev.qdev, 0); ide_bus_new(&s->bus[1], &s->dev.qdev, 1);
MMIOState *s = opaque; ide_cmd_write(&s->bus, 0, val); } static const MemoryRegionOps mmio_ide_cs_ops = { .read = mmio_ide_status_read, .write = mmio_ide_cmd_write, .endianness = DEVICE_LITTLE_ENDIAN, }; static const VMStateDescription vmstate_ide_mmio = { .name = "mmio-ide", .version_id = 3, .minimum_version_id = 0, .fields = (VMStateField[]) { VMSTATE_IDE_BUS(bus, MMIOState), VMSTATE_IDE_DRIVES(bus.ifs, MMIOState), VMSTATE_END_OF_LIST() } }; static void mmio_ide_realizefn(DeviceState *dev, Error **errp) { SysBusDevice *d = SYS_BUS_DEVICE(dev); MMIOState *s = MMIO_IDE(dev); ide_init2(&s->bus, s->irq); memory_region_init_io(&s->iomem1, OBJECT(s), &mmio_ide_ops, s, "ide-mmio.1", 16 << s->shift); memory_region_init_io(&s->iomem2, OBJECT(s), &mmio_ide_cs_ops, s,