Subversion Repositories HelenOS-historic

Rev

Rev 575 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 575 Rev 576
Line 36... Line 36...
36
#include <synch/spinlock.h>
36
#include <synch/spinlock.h>
37
#include <typedefs.h>
37
#include <typedefs.h>
38
#include <console/chardev.h>
38
#include <console/chardev.h>
39
#include <console/console.h>
39
#include <console/console.h>
40
#include <macros.h>
40
#include <macros.h>
-
 
41
#include <interrupt.h>
41
 
42
 
42
/**
43
/**
43
 * i8042 processor driver.
44
 * i8042 processor driver.
44
 * It takes care of low-level keyboard functions.
45
 * It takes care of low-level keyboard functions.
45
 */
46
 */
Line 233... Line 234...
233
    SPECIAL, /* 0x7d */
234
    SPECIAL, /* 0x7d */
234
    SPECIAL, /* 0x7e */
235
    SPECIAL, /* 0x7e */
235
    SPECIAL, /* 0x7f */
236
    SPECIAL, /* 0x7f */
236
};
237
};
237
 
238
 
-
 
239
static void i8042_interrupt(int n, void *stack);
-
 
240
 
238
/** Initialize i8042. */
241
/** Initialize i8042. */
239
void i8042_init(void)
242
void i8042_init(void)
240
{
243
{
241
    trap_register(VECTOR_KBD, i8042_interrupt);
244
    exc_register(VECTOR_KBD, "i8042_interrupt", i8042_interrupt);
242
    trap_virtual_enable_irqs(1<<IRQ_KBD);
245
    trap_virtual_enable_irqs(1<<IRQ_KBD);
243
    spinlock_initialize(&keylock, "i8042_lock");
246
    spinlock_initialize(&keylock, "i8042_lock");
244
    chardev_initialize("i8042_kbd", &kbrd, &ops);
247
    chardev_initialize("i8042_kbd", &kbrd, &ops);
245
    stdin = &kbrd;
248
    stdin = &kbrd;
246
}
249
}
Line 248... Line 251...
248
/** Process i8042 interrupt.
251
/** Process i8042 interrupt.
249
 *
252
 *
250
 * @param n Interrupt vector.
253
 * @param n Interrupt vector.
251
 * @param stack Interrupted stack.
254
 * @param stack Interrupted stack.
252
 */
255
 */
253
void i8042_interrupt(__u8 n, __native stack[])
256
void i8042_interrupt(int n, void *stack)
254
{
257
{
255
    __u8 x;
258
    __u8 x;
256
 
259
 
257
    trap_virtual_eoi();
260
    trap_virtual_eoi();
258
    x = inb(i8042_DATA);
261
    x = inb(i8042_DATA);