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;
|