Exemplo n.º 1
0
{
    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);
Exemplo n.º 2
0
Arquivo: mmio.c Projeto: AlexHai/qemu
    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,