cg3_invalidate_display(s); return 0; } static const VMStateDescription vmstate_cg3 = { .name = "cg3", .version_id = 1, .minimum_version_id = 1, .post_load = vmstate_cg3_post_load, .fields = (VMStateField[]) { VMSTATE_UINT16(height, CG3State), VMSTATE_UINT16(width, CG3State), VMSTATE_UINT16(depth, CG3State), VMSTATE_BUFFER(r, CG3State), VMSTATE_BUFFER(g, CG3State), VMSTATE_BUFFER(b, CG3State), VMSTATE_UINT8(dac_index, CG3State), VMSTATE_UINT8(dac_state, CG3State), VMSTATE_END_OF_LIST() } }; static void cg3_reset(DeviceState *d) { CG3State *s = CG3(d); /* Initialize palette */ memset(s->r, 0, 256); memset(s->g, 0, 256);
} return 0; } static const VMStateDescription vmstate_tcx = { .name ="tcx", .version_id = 4, .minimum_version_id = 4, .minimum_version_id_old = 4, .post_load = vmstate_tcx_post_load, .fields = (VMStateField []) { VMSTATE_UINT16(height, TCXState), VMSTATE_UINT16(width, TCXState), VMSTATE_UINT16(depth, TCXState), VMSTATE_BUFFER(r, TCXState), VMSTATE_BUFFER(g, TCXState), VMSTATE_BUFFER(b, TCXState), VMSTATE_UINT8(dac_index, TCXState), VMSTATE_UINT8(dac_state, TCXState), VMSTATE_END_OF_LIST() } }; static void tcx_reset(DeviceState *d) { TCXState *s = container_of(d, TCXState, busdev.qdev); /* Initialize palette */ memset(s->r, 0, 256); memset(s->g, 0, 256);
if (s->lost_tick_policy == LOST_TICK_SLEW) { rtc_coalesced_timer_update(s); } } #endif return 0; } static const VMStateDescription vmstate_rtc = { .name = "mc146818rtc", .version_id = 3, .minimum_version_id = 1, .minimum_version_id_old = 1, .post_load = rtc_post_load, .fields = (VMStateField []) { VMSTATE_BUFFER(cmos_data, RTCState), VMSTATE_UINT8(cmos_index, RTCState), VMSTATE_UNUSED(7*4), VMSTATE_TIMER(periodic_timer, RTCState), VMSTATE_INT64(next_periodic_time, RTCState), VMSTATE_UNUSED(3*8), VMSTATE_UINT32_V(irq_coalesced, RTCState, 2), VMSTATE_UINT32_V(period, RTCState, 2), VMSTATE_UINT64_V(base_rtc, RTCState, 3), VMSTATE_UINT64_V(last_update, RTCState, 3), VMSTATE_INT64_V(offset, RTCState, 3), VMSTATE_TIMER_V(update_timer, RTCState, 3), VMSTATE_UINT64_V(next_alarm_time, RTCState, 3), VMSTATE_END_OF_LIST() } };
obuf[1] = d->devaddr; olen = 2; break; } break; } return olen; } static const VMStateDescription vmstate_adb_kbd = { .name = "adb_kbd", .version_id = 1, .minimum_version_id = 1, .minimum_version_id_old = 1, .fields = (VMStateField[]) { VMSTATE_BUFFER(data, KBDState), VMSTATE_INT32(rptr, KBDState), VMSTATE_INT32(wptr, KBDState), VMSTATE_INT32(count, KBDState), VMSTATE_END_OF_LIST() } }; static int adb_kbd_reset(ADBDevice *d) { KBDState *s = d->opaque; d->handler = 1; d->devaddr = ADB_KEYBOARD; memset(s, 0, sizeof(KBDState));
s->wregs[saddr] = val; } static bool esp_mem_accepts(void *opaque, target_phys_addr_t addr, unsigned size, bool is_write) { return (size == 1) || (is_write && size == 4); } const VMStateDescription vmstate_esp = { .name ="esp", .version_id = 3, .minimum_version_id = 3, .minimum_version_id_old = 3, .fields = (VMStateField []) { VMSTATE_BUFFER(rregs, ESPState), VMSTATE_BUFFER(wregs, ESPState), VMSTATE_INT32(ti_size, ESPState), VMSTATE_UINT32(ti_rptr, ESPState), VMSTATE_UINT32(ti_wptr, ESPState), VMSTATE_BUFFER(ti_buf, ESPState), VMSTATE_UINT32(status, ESPState), VMSTATE_UINT32(dma, ESPState), VMSTATE_BUFFER(cmdbuf, ESPState), VMSTATE_UINT32(cmdlen, ESPState), VMSTATE_UINT32(do_cmd, ESPState), VMSTATE_UINT32(dma_left, ESPState), VMSTATE_END_OF_LIST() } };
} } static const VMStateDescription vmstate_mipsnet = { .name = "mipsnet", .version_id = 0, .minimum_version_id = 0, .minimum_version_id_old = 0, .fields = (VMStateField[]) { VMSTATE_UINT32(busy, MIPSnetState), VMSTATE_UINT32(rx_count, MIPSnetState), VMSTATE_UINT32(rx_read, MIPSnetState), VMSTATE_UINT32(tx_count, MIPSnetState), VMSTATE_UINT32(tx_written, MIPSnetState), VMSTATE_UINT32(intctl, MIPSnetState), VMSTATE_BUFFER(rx_buffer, MIPSnetState), VMSTATE_BUFFER(tx_buffer, MIPSnetState), VMSTATE_END_OF_LIST() } }; static void mipsnet_cleanup(NetClientState *nc) { MIPSnetState *s = DO_UPCAST(NICState, nc, nc)->opaque; s->nic = NULL; } static NetClientInfo net_mipsnet_info = { .type = NET_CLIENT_OPTIONS_KIND_NIC, .size = sizeof(NICState),
} static const VMStateDescription vmstate_nand = { .name = "nand", .version_id = 1, .minimum_version_id = 1, .minimum_version_id_old = 1, .pre_save = nand_pre_save, .post_load = nand_post_load, .fields = (VMStateField[]) { VMSTATE_UINT8(cle, NANDFlashState), VMSTATE_UINT8(ale, NANDFlashState), VMSTATE_UINT8(ce, NANDFlashState), VMSTATE_UINT8(wp, NANDFlashState), VMSTATE_UINT8(gnd, NANDFlashState), VMSTATE_BUFFER(io, NANDFlashState), VMSTATE_UINT32(ioaddr_vmstate, NANDFlashState), VMSTATE_INT32(iolen, NANDFlashState), VMSTATE_UINT32(cmd, NANDFlashState), VMSTATE_UINT64(addr, NANDFlashState), VMSTATE_INT32(addrlen, NANDFlashState), VMSTATE_INT32(status, NANDFlashState), VMSTATE_INT32(offset, NANDFlashState), /* XXX: do we want to save s->storage too? */ VMSTATE_END_OF_LIST() } }; static int nand_device_init(SysBusDevice *dev) { int pagesize;
z->enabled = 0; z->pos = 0; return 0; } static VMStateDescription vmstate_zipit_lcd_state = { .name = "zipit-lcd", .version_id = 2, .minimum_version_id = 2, .minimum_version_id_old = 2, .fields = (VMStateField[]) { VMSTATE_SSI_SLAVE(ssidev, ZipitLCD), VMSTATE_INT32(selected, ZipitLCD), VMSTATE_INT32(enabled, ZipitLCD), VMSTATE_BUFFER(buf, ZipitLCD), VMSTATE_UINT32(cur_reg, ZipitLCD), VMSTATE_INT32(pos, ZipitLCD), VMSTATE_END_OF_LIST(), } }; static void zipit_lcd_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); SSISlaveClass *k = SSI_SLAVE_CLASS(klass); k->init = zipit_lcd_init; k->transfer = zipit_lcd_transfer; dc->vmsd = &vmstate_zipit_lcd_state; }
/* Note: This device is not created in the board initialization, * instead it has to be added with the -device parameter. Therefore, * the device maps itself. */ sysbus_mmio_map(dev, 0, s->base); return 0; } static const VMStateDescription vmstate_lm32_sys = { .name = "lm32-sys", .version_id = 1, .minimum_version_id = 1, .fields = (VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, LM32SysState, R_MAX), VMSTATE_BUFFER(testname, LM32SysState), VMSTATE_END_OF_LIST() } }; static Property lm32_sys_properties[] = { DEFINE_PROP_UINT32("base", LM32SysState, base, 0xffff0000), DEFINE_PROP_END_OF_LIST(), }; static void lm32_sys_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); k->init = lm32_sys_init;
s->mouse_dy = 0; s->mouse_dz = 0; s->mouse_buttons = 0; } static const VMStateDescription vmstate_ps2_common = { .name = "PS2 Common State", .version_id = 3, .minimum_version_id = 2, .minimum_version_id_old = 2, .fields = (VMStateField []) { VMSTATE_INT32(write_cmd, PS2State), VMSTATE_INT32(queue.rptr, PS2State), VMSTATE_INT32(queue.wptr, PS2State), VMSTATE_INT32(queue.count, PS2State), VMSTATE_BUFFER(queue.data, PS2State), VMSTATE_END_OF_LIST() } }; static bool ps2_keyboard_ledstate_needed(void *opaque) { PS2KbdState *s = opaque; return s->ledstate != 0; /* 0 is default state */ } static int ps2_kbd_ledstate_post_load(void *opaque, int version_id) { PS2KbdState *s = opaque;