/* Reservation */ VMSTATE_UINTTL(env.reserve_addr, PowerPCCPU), /* Supervisor mode architected state */ VMSTATE_UINTTL(env.msr, PowerPCCPU), /* Internal state */ VMSTATE_UINTTL(env.hflags_nmsr, PowerPCCPU), /* FIXME: access_type? */ /* Sanity checking */ VMSTATE_UINTTL_EQUAL(env.msr_mask, PowerPCCPU), VMSTATE_UINT64_EQUAL(env.insns_flags, PowerPCCPU), VMSTATE_UINT64_EQUAL(env.insns_flags2, PowerPCCPU), VMSTATE_UINT32_EQUAL(env.nb_BATs, PowerPCCPU), VMSTATE_END_OF_LIST() }, .subsections = (const VMStateDescription*[]) { &vmstate_fpu, &vmstate_altivec, &vmstate_vsx, &vmstate_sr, #ifdef TARGET_PPC64 &vmstate_tm, &vmstate_slb, #endif /* TARGET_PPC64 */ &vmstate_tlb6xx, &vmstate_tlbemb, &vmstate_tlbmas, NULL
s->read_count++; s->key_fifo[slot] = val; } else { fprintf(stderr, "syborg_keyboard error! FIFO overflow\n"); } syborg_keyboard_update(s); } static const VMStateDescription vmstate_syborg_keyboard = { .name = "syborg_keyboard", .version_id = 1, .minimum_version_id = 1, .minimum_version_id_old = 1, .fields = (VMStateField[]) { VMSTATE_UINT32_EQUAL(fifo_size, SyborgKeyboardState), VMSTATE_UINT32(int_enabled, SyborgKeyboardState), VMSTATE_UINT32(read_pos, SyborgKeyboardState), VMSTATE_UINT32(read_count, SyborgKeyboardState), VMSTATE_VARRAY_UINT32(key_fifo, SyborgKeyboardState, fifo_size, 1, vmstate_info_uint32, uint32), VMSTATE_END_OF_LIST() } }; static int syborg_keyboard_init(SysBusDevice *dev) { SyborgKeyboardState *s = FROM_SYSBUS(SyborgKeyboardState, dev); int iomemtype; sysbus_init_irq(dev, &s->irq);
VMSTATE_UINT8(saved_priority, ICSIRQState), VMSTATE_UINT8(status, ICSIRQState), VMSTATE_UINT8(flags, ICSIRQState), VMSTATE_END_OF_LIST() }, }; static const VMStateDescription vmstate_ics = { .name = "ics", .version_id = 1, .minimum_version_id = 1, .pre_save = ics_dispatch_pre_save, .post_load = ics_dispatch_post_load, .fields = (VMStateField[]) { /* Sanity check */ VMSTATE_UINT32_EQUAL(nr_irqs, ICSState), VMSTATE_STRUCT_VARRAY_POINTER_UINT32(irqs, ICSState, nr_irqs, vmstate_ics_irq, ICSIRQState), VMSTATE_END_OF_LIST() }, }; static void ics_initfn(Object *obj) { ICSState *ics = ICS(obj); ics->offset = XICS_IRQ_BASE; } static void ics_realize(DeviceState *dev, Error **errp)
VMSTATE_UINT8(saved_priority, ICSIRQState), VMSTATE_UINT8(status, ICSIRQState), VMSTATE_UINT8(flags, ICSIRQState), VMSTATE_END_OF_LIST() }, }; static const VMStateDescription vmstate_ics_base = { .name = "ics", .version_id = 1, .minimum_version_id = 1, .pre_save = ics_base_pre_save, .post_load = ics_base_post_load, .fields = (VMStateField[]) { /* Sanity check */ VMSTATE_UINT32_EQUAL(nr_irqs, ICSState, NULL), VMSTATE_STRUCT_VARRAY_POINTER_UINT32(irqs, ICSState, nr_irqs, vmstate_ics_base_irq, ICSIRQState), VMSTATE_END_OF_LIST() }, }; static Property ics_base_properties[] = { DEFINE_PROP_UINT32("nr-irqs", ICSState, nr_irqs, 0), DEFINE_PROP_END_OF_LIST(), }; static void ics_base_class_init(ObjectClass *klass, void *data) {