| #include <stdio.h> |
| #include <unistd.h> |
| #include <errno.h> |
| #include <string.h> |
| #include <sys/cpu.h> |
| |
| void drain_keyboard(void) |
| { |
| /* Prevent "ghost typing" and keyboard buffer snooping */ |
| volatile char junk; |
| int rv; |
| |
| do { |
| rv = read(0, (char *)&junk, 1); |
| } while (rv > 0); |
| |
| junk = 0; |
| |
| cli(); |
| *(volatile uint8_t *)0x419 = 0; /* Alt-XXX keyboard area */ |
| *(volatile uint16_t *)0x41a = 0x1e; /* Keyboard buffer empty */ |
| *(volatile uint16_t *)0x41c = 0x1e; |
| memset((void *)0x41e, 0, 32); /* Clear the actual keyboard buffer */ |
| sti(); |
| } |