Revision d7d02e3c hw/pckbd.c
b/hw/pckbd.c | ||
---|---|---|
139 | 139 |
} KBDState; |
140 | 140 |
|
141 | 141 |
KBDState kbd_state; |
142 |
int reset_requested; |
|
143 | 142 |
|
144 | 143 |
/* update irq and KBD_STAT_[MOUSE_]OBF */ |
145 | 144 |
/* XXX: not generating the irqs if KBD_MODE_DISABLE_KBD is set may be |
... | ... | |
274 | 273 |
break; |
275 | 274 |
#endif |
276 | 275 |
case KBD_CCMD_RESET: |
277 |
reset_requested = 1; |
|
278 |
cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT); |
|
276 |
qemu_system_reset_request(); |
|
279 | 277 |
break; |
280 | 278 |
case 0xff: |
281 | 279 |
/* ignore that - I don't know what is its use */ |
... | ... | |
617 | 615 |
cpu_x86_set_a20(cpu_single_env, (val >> 1) & 1); |
618 | 616 |
#endif |
619 | 617 |
if (!(val & 1)) { |
620 |
reset_requested = 1; |
|
621 |
cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT); |
|
618 |
qemu_system_reset_request(); |
|
622 | 619 |
} |
623 | 620 |
break; |
624 | 621 |
case KBD_CCMD_WRITE_MOUSE: |
... | ... | |
630 | 627 |
s->write_cmd = 0; |
631 | 628 |
} |
632 | 629 |
|
633 |
void kbd_reset(KBDState *s)
|
|
630 |
static void kbd_reset(void *opaque)
|
|
634 | 631 |
{ |
632 |
KBDState *s = opaque; |
|
635 | 633 |
KBDQueue *q; |
636 | 634 |
|
637 | 635 |
s->kbd_write_cmd = -1; |
... | ... | |
656 | 654 |
|
657 | 655 |
qemu_add_kbd_event_handler(pc_kbd_put_keycode, s); |
658 | 656 |
qemu_add_mouse_event_handler(pc_kbd_mouse_event, s); |
657 |
qemu_register_reset(kbd_reset, s); |
|
659 | 658 |
} |
Also available in: Unified diff