Revision 7783e9f0 hw/ps2.c
b/hw/ps2.c | ||
---|---|---|
461 | 461 |
q->count = 0; |
462 | 462 |
} |
463 | 463 |
|
464 |
static void ps2_common_save (QEMUFile *f, PS2State *s) |
|
465 |
{ |
|
466 |
qemu_put_be32s (f, &s->write_cmd); |
|
467 |
qemu_put_be32s (f, &s->queue.rptr); |
|
468 |
qemu_put_be32s (f, &s->queue.wptr); |
|
469 |
qemu_put_be32s (f, &s->queue.count); |
|
470 |
qemu_put_buffer (f, s->queue.data, sizeof (s->queue.data)); |
|
471 |
} |
|
472 |
|
|
473 |
static void ps2_common_load (QEMUFile *f, PS2State *s) |
|
474 |
{ |
|
475 |
qemu_get_be32s (f, &s->write_cmd); |
|
476 |
qemu_get_be32s (f, &s->queue.rptr); |
|
477 |
qemu_get_be32s (f, &s->queue.wptr); |
|
478 |
qemu_get_be32s (f, &s->queue.count); |
|
479 |
qemu_get_buffer (f, s->queue.data, sizeof (s->queue.data)); |
|
480 |
} |
|
481 |
|
|
464 | 482 |
static void ps2_kbd_save(QEMUFile* f, void* opaque) |
465 | 483 |
{ |
466 | 484 |
PS2KbdState *s = (PS2KbdState*)opaque; |
467 |
|
|
468 |
qemu_put_be32s(f, &s->common.write_cmd);
|
|
485 |
|
|
486 |
ps2_common_save (f, &s->common);
|
|
469 | 487 |
qemu_put_be32s(f, &s->scan_enabled); |
488 |
qemu_put_be32s(f, &s->translate); |
|
470 | 489 |
} |
471 | 490 |
|
472 | 491 |
static void ps2_mouse_save(QEMUFile* f, void* opaque) |
473 | 492 |
{ |
474 | 493 |
PS2MouseState *s = (PS2MouseState*)opaque; |
475 |
|
|
476 |
qemu_put_be32s(f, &s->common.write_cmd);
|
|
494 |
|
|
495 |
ps2_common_save (f, &s->common);
|
|
477 | 496 |
qemu_put_8s(f, &s->mouse_status); |
478 | 497 |
qemu_put_8s(f, &s->mouse_resolution); |
479 | 498 |
qemu_put_8s(f, &s->mouse_sample_rate); |
... | ... | |
489 | 508 |
static int ps2_kbd_load(QEMUFile* f, void* opaque, int version_id) |
490 | 509 |
{ |
491 | 510 |
PS2KbdState *s = (PS2KbdState*)opaque; |
492 |
|
|
493 |
if (version_id != 1)
|
|
511 |
|
|
512 |
if (version_id != 2)
|
|
494 | 513 |
return -EINVAL; |
495 |
qemu_get_be32s(f, &s->common.write_cmd); |
|
514 |
|
|
515 |
ps2_common_load (f, &s->common); |
|
496 | 516 |
qemu_get_be32s(f, &s->scan_enabled); |
517 |
qemu_get_be32s(f, &s->translate); |
|
497 | 518 |
return 0; |
498 | 519 |
} |
499 | 520 |
|
500 | 521 |
static int ps2_mouse_load(QEMUFile* f, void* opaque, int version_id) |
501 | 522 |
{ |
502 | 523 |
PS2MouseState *s = (PS2MouseState*)opaque; |
503 |
|
|
504 |
if (version_id != 1)
|
|
524 |
|
|
525 |
if (version_id != 2)
|
|
505 | 526 |
return -EINVAL; |
506 |
qemu_get_be32s(f, &s->common.write_cmd); |
|
527 |
|
|
528 |
ps2_common_load (f, &s->common); |
|
507 | 529 |
qemu_get_8s(f, &s->mouse_status); |
508 | 530 |
qemu_get_8s(f, &s->mouse_resolution); |
509 | 531 |
qemu_get_8s(f, &s->mouse_sample_rate); |
... | ... | |
524 | 546 |
s->common.update_irq = update_irq; |
525 | 547 |
s->common.update_arg = update_arg; |
526 | 548 |
ps2_reset(&s->common); |
527 |
register_savevm("ps2kbd", 0, 1, ps2_kbd_save, ps2_kbd_load, s);
|
|
549 |
register_savevm("ps2kbd", 0, 2, ps2_kbd_save, ps2_kbd_load, s);
|
|
528 | 550 |
qemu_add_kbd_event_handler(ps2_put_keycode, s); |
529 | 551 |
qemu_register_reset(ps2_reset, &s->common); |
530 | 552 |
return s; |
... | ... | |
537 | 559 |
s->common.update_irq = update_irq; |
538 | 560 |
s->common.update_arg = update_arg; |
539 | 561 |
ps2_reset(&s->common); |
540 |
register_savevm("ps2mouse", 0, 1, ps2_mouse_save, ps2_mouse_load, s);
|
|
562 |
register_savevm("ps2mouse", 0, 2, ps2_mouse_save, ps2_mouse_load, s);
|
|
541 | 563 |
qemu_add_mouse_event_handler(ps2_mouse_event, s); |
542 | 564 |
qemu_register_reset(ps2_reset, &s->common); |
543 | 565 |
return s; |
Also available in: Unified diff