Commit 675376f2b450e22cba45e0617f34ab8454219ef5

Authored by bellard
1 parent 15a34c63

kbd save/restore


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@991 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 48 additions and 0 deletions
hw/pckbd.c
... ... @@ -642,11 +642,59 @@ static void kbd_reset(void *opaque)
642 642 q->count = 0;
643 643 }
644 644  
  645 +static void kbd_save(QEMUFile* f, void* opaque)
  646 +{
  647 + KBDState *s = (KBDState*)opaque;
  648 +
  649 + qemu_put_8s(f, &s->write_cmd);
  650 + qemu_put_8s(f, &s->status);
  651 + qemu_put_8s(f, &s->mode);
  652 + qemu_put_be32s(f, &s->kbd_write_cmd);
  653 + qemu_put_be32s(f, &s->scan_enabled);
  654 + qemu_put_be32s(f, &s->mouse_write_cmd);
  655 + qemu_put_8s(f, &s->mouse_status);
  656 + qemu_put_8s(f, &s->mouse_resolution);
  657 + qemu_put_8s(f, &s->mouse_sample_rate);
  658 + qemu_put_8s(f, &s->mouse_wrap);
  659 + qemu_put_8s(f, &s->mouse_type);
  660 + qemu_put_8s(f, &s->mouse_detect_state);
  661 + qemu_put_be32s(f, &s->mouse_dx);
  662 + qemu_put_be32s(f, &s->mouse_dy);
  663 + qemu_put_be32s(f, &s->mouse_dz);
  664 + qemu_put_8s(f, &s->mouse_buttons);
  665 +}
  666 +
  667 +static int kbd_load(QEMUFile* f, void* opaque, int version_id)
  668 +{
  669 + KBDState *s = (KBDState*)opaque;
  670 +
  671 + if (version_id != 1)
  672 + return -EINVAL;
  673 + qemu_get_8s(f, &s->write_cmd);
  674 + qemu_get_8s(f, &s->status);
  675 + qemu_get_8s(f, &s->mode);
  676 + qemu_get_be32s(f, &s->kbd_write_cmd);
  677 + qemu_get_be32s(f, &s->scan_enabled);
  678 + qemu_get_be32s(f, &s->mouse_write_cmd);
  679 + qemu_get_8s(f, &s->mouse_status);
  680 + qemu_get_8s(f, &s->mouse_resolution);
  681 + qemu_get_8s(f, &s->mouse_sample_rate);
  682 + qemu_get_8s(f, &s->mouse_wrap);
  683 + qemu_get_8s(f, &s->mouse_type);
  684 + qemu_get_8s(f, &s->mouse_detect_state);
  685 + qemu_get_be32s(f, &s->mouse_dx);
  686 + qemu_get_be32s(f, &s->mouse_dy);
  687 + qemu_get_be32s(f, &s->mouse_dz);
  688 + qemu_get_8s(f, &s->mouse_buttons);
  689 + return 0;
  690 +}
  691 +
645 692 void kbd_init(void)
646 693 {
647 694 KBDState *s = &kbd_state;
648 695  
649 696 kbd_reset(s);
  697 + register_savevm("pckbd", 0, 1, kbd_save, kbd_load, s);
650 698 register_ioport_read(0x60, 1, 1, kbd_read_data, s);
651 699 register_ioport_write(0x60, 1, 1, kbd_write_data, s);
652 700 register_ioport_read(0x64, 1, 1, kbd_read_status, s);
... ...