]> Joshua Wise's Git repositories - netwatch.git/blobdiff - aseg-paging/main.c
That is almost certainly all the cause of my woe.
[netwatch.git] / aseg-paging / main.c
index 21aaeeb6a33bec77fcd209eefba89347965782ee..41465e2629059f41417a08c35977a23f7ae8cae6 100644 (file)
@@ -17,10 +17,11 @@ extern unsigned int counter;
 static int _ibf_ready = 0;
 static int _waiting_for_data = 0;
 static int curdev = 0;
 static int _ibf_ready = 0;
 static int _waiting_for_data = 0;
 static int curdev = 0;
+static int adding_locks_from_time_to_time = 0;
 
 static int _inject_ready()
 {
 
 static int _inject_ready()
 {
-       return _ibf_ready && !_waiting_for_data;
+       return _ibf_ready && !_waiting_for_data && !adding_locks_from_time_to_time;
 }
 
 void _try_inject()
 }
 
 void _try_inject()
@@ -37,6 +38,8 @@ void _try_inject()
                outb(0x60, kbd_get_injected_scancode());        /* data */
                while ((inb(0x64) & 0x02) && i--)       /* wait for completion */
                        ;
                outb(0x60, kbd_get_injected_scancode());        /* data */
                while ((inb(0x64) & 0x02) && i--)       /* wait for completion */
                        ;
+               outl(0x844, 0x1000);
+               adding_locks_from_time_to_time++;
                smi_enable_event(SMI_EVENT_DEVTRAP_KBC);
        } else if (kbd_has_injected_scancode())
                outputf("Would like to inject, but %d %d", _ibf_ready, _waiting_for_data);
                smi_enable_event(SMI_EVENT_DEVTRAP_KBC);
        } else if (kbd_has_injected_scancode())
                outputf("Would like to inject, but %d %d", _ibf_ready, _waiting_for_data);
@@ -70,15 +73,20 @@ void pci_dump() {
                        
                        break;
                case 0x60:
                        
                        break;
                case 0x60:
-                       if ((curdev == 0) && kbd_has_injected_scancode())
+                       if ((curdev == 0) && kbd_has_injected_scancode() && !adding_locks_from_time_to_time)
                                b = kbd_get_injected_scancode();
                        else
                                b = inb(0x60);
                                b = kbd_get_injected_scancode();
                        else
                                b = inb(0x60);
+                       if (adding_locks_from_time_to_time)
+                               adding_locks_from_time_to_time--;
                        if ((curdev == 0) && (b == 0x01)) {     /* Escape */
                                outb(0xCF9, 0x4);       /* Reboot */
                                return;
                        }
                        break;
                        if ((curdev == 0) && (b == 0x01)) {     /* Escape */
                                outb(0xCF9, 0x4);       /* Reboot */
                                return;
                        }
                        break;
+
+               default:
+                       b = inb(cts & 0xFFFF);
                }
                
                dologf("READ : %08x (%02x)", cts, b);
                }
                
                dologf("READ : %08x (%02x)", cts, b);
This page took 0.027225 seconds and 4 git commands to generate.