Revision 3c619b59
b/hw/pckbd.c | ||
---|---|---|
339 | 339 |
s->status = KBD_STAT_CMD | KBD_STAT_UNLOCKED; |
340 | 340 |
} |
341 | 341 |
|
342 |
static void kbd_save(QEMUFile* f, void* opaque) |
|
343 |
{ |
|
344 |
KBDState *s = (KBDState*)opaque; |
|
345 |
|
|
346 |
qemu_put_8s(f, &s->write_cmd); |
|
347 |
qemu_put_8s(f, &s->status); |
|
348 |
qemu_put_8s(f, &s->mode); |
|
349 |
qemu_put_8s(f, &s->pending); |
|
350 |
} |
|
351 |
|
|
352 |
static int kbd_load(QEMUFile* f, void* opaque, int version_id) |
|
353 |
{ |
|
354 |
KBDState *s = (KBDState*)opaque; |
|
355 |
|
|
356 |
if (version_id != 3) |
|
357 |
return -EINVAL; |
|
358 |
qemu_get_8s(f, &s->write_cmd); |
|
359 |
qemu_get_8s(f, &s->status); |
|
360 |
qemu_get_8s(f, &s->mode); |
|
361 |
qemu_get_8s(f, &s->pending); |
|
362 |
return 0; |
|
363 |
} |
|
342 |
static const VMStateDescription vmstate_kbd = { |
|
343 |
.name = "pckbd", |
|
344 |
.version_id = 3, |
|
345 |
.minimum_version_id = 3, |
|
346 |
.minimum_version_id_old = 3, |
|
347 |
.fields = (VMStateField []) { |
|
348 |
VMSTATE_UINT8(write_cmd, KBDState), |
|
349 |
VMSTATE_UINT8(status, KBDState), |
|
350 |
VMSTATE_UINT8(mode, KBDState), |
|
351 |
VMSTATE_UINT8(pending, KBDState), |
|
352 |
VMSTATE_END_OF_LIST() |
|
353 |
} |
|
354 |
}; |
|
364 | 355 |
|
365 | 356 |
/* Memory mapped interface */ |
366 | 357 |
static uint32_t kbd_mm_readb (void *opaque, target_phys_addr_t addr) |
... | ... | |
407 | 398 |
s->mask = mask; |
408 | 399 |
|
409 | 400 |
kbd_reset(s); |
410 |
register_savevm("pckbd", 0, 3, kbd_save, kbd_load, s);
|
|
401 |
vmstate_register(0, &vmstate_kbd, s);
|
|
411 | 402 |
s_io_memory = cpu_register_io_memory(kbd_mm_read, kbd_mm_write, s); |
412 | 403 |
cpu_register_physical_memory(base, size, s_io_memory); |
413 | 404 |
|
... | ... | |
432 | 423 |
isa_init_irq(dev, &s->irq_mouse, 12); |
433 | 424 |
|
434 | 425 |
kbd_reset(s); |
435 |
register_savevm("pckbd", 0, 3, kbd_save, kbd_load, s);
|
|
426 |
vmstate_register(0, &vmstate_kbd, s);
|
|
436 | 427 |
register_ioport_read(0x60, 1, 1, kbd_read_data, s); |
437 | 428 |
register_ioport_write(0x60, 1, 1, kbd_write_data, s); |
438 | 429 |
register_ioport_read(0x64, 1, 1, kbd_read_status, s); |
Also available in: Unified diff