X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fkeyboard.c;h=3609058e1f513222b77f0d464806ac9a9bd50145;hp=2751cc0a96cdee9f097f9746d6bfe079a28afcd9;hb=e3b069fbf758a7d689c75a1b24441c7eec63e230;hpb=d57b407f9d05a21303bc2c94cbd5142de130be48 diff --git a/palacios/src/devices/keyboard.c b/palacios/src/devices/keyboard.c index 2751cc0..3609058 100644 --- a/palacios/src/devices/keyboard.c +++ b/palacios/src/devices/keyboard.c @@ -28,7 +28,6 @@ #include #include - #ifndef V3_CONFIG_DEBUG_KEYBOARD #undef PrintDebug #define PrintDebug(fmt, args...) @@ -813,7 +812,7 @@ static int keyboard_write_command(struct guest_info * core, ushort_t port, void case 0xf2: // instead of what is currently in output_byte (I think) case 0xf3: // main effect is taht if bit zero is zero case 0xf4: // should cause reset - case 0xf5: // I doubt anything more recent than a 286 running OS2 with the penalty box will care + case 0xf5: case 0xf6: case 0xf7: case 0xf8: @@ -822,9 +821,15 @@ static int keyboard_write_command(struct guest_info * core, ushort_t port, void case 0xfb: case 0xfc: case 0xfd: - case 0xfe: case 0xff: - PrintDebug(core->vm_info, core, "keyboard: ignoring command 0x%x on output port\n", cmd); + if (!(cmd & 0x1)) { + // general purpose reset + PrintDebug(core->vm_info, core, "keyboard: reseting VM\n"); + v3_reset_vm(core->vm_info); + + } else { + PrintDebug(core->vm_info, core, "keyboard: ignoring command 0x%x on output port\n", cmd); + } break; // case ac diagonstic - returns 16 bytes from keyboard microcontroler on 60h