/kernel/trunk/arch/ia32/src/drivers/i8259.c |
---|
32,6 → 32,7 |
#include <arch/asm.h> |
#include <arch.h> |
#include <print.h> |
#include <interrupt.h> |
/* |
* This is the PIC driver. |
38,6 → 39,8 |
* Programmable Interrupt Controller for UP systems. |
*/ |
static void pic_spurious(int n, void *stack); |
void i8259_init(void) |
{ |
/* ICW1: this is ICW1, ICW4 to follow */ |
67,7 → 70,7 |
/* |
* Register interrupt handler for the PIC spurious interrupt. |
*/ |
trap_register(VECTOR_PIC_SPUR, pic_spurious); |
exc_register(VECTOR_PIC_SPUR, "pic_spurious", pic_spurious); |
/* |
* Set the enable/disable IRQs handlers. |
115,7 → 118,7 |
outb(0xa0,0x20); |
} |
void pic_spurious(__u8 n, __native stack[]) |
void pic_spurious(int n, void *stack) |
{ |
printf("cpu%d: PIC spurious interrupt\n", CPU->id); |
} |
/kernel/trunk/arch/ia32/src/drivers/i8042.c |
---|
38,6 → 38,7 |
#include <console/chardev.h> |
#include <console/console.h> |
#include <macros.h> |
#include <interrupt.h> |
/** |
* i8042 processor driver. |
235,10 → 236,12 |
SPECIAL, /* 0x7f */ |
}; |
static void i8042_interrupt(int n, void *stack); |
/** Initialize i8042. */ |
void i8042_init(void) |
{ |
trap_register(VECTOR_KBD, i8042_interrupt); |
exc_register(VECTOR_KBD, "i8042_interrupt", i8042_interrupt); |
trap_virtual_enable_irqs(1<<IRQ_KBD); |
spinlock_initialize(&keylock, "i8042_lock"); |
chardev_initialize("i8042_kbd", &kbrd, &ops); |
250,7 → 253,7 |
* @param n Interrupt vector. |
* @param stack Interrupted stack. |
*/ |
void i8042_interrupt(__u8 n, __native stack[]) |
void i8042_interrupt(int n, void *stack) |
{ |
__u8 x; |
/kernel/trunk/arch/ia32/src/drivers/i8254.c |
---|
39,6 → 39,7 |
#include <arch/cpuid.h> |
#include <arch.h> |
#include <time/delay.h> |
#include <interrupt.h> |
/* |
* i8254 chip driver. |
52,6 → 53,8 |
#define CLK_CONST 1193180 |
#define MAGIC_NUMBER 1194 |
static void i8254_interrupt(int n, void *stack); |
void i8254_init(void) |
{ |
i8254_normal_operation(); |
64,7 → 67,7 |
outb(CLK_PORT1, (CLK_CONST/HZ) & 0xf); |
outb(CLK_PORT1, (CLK_CONST/HZ) >> 8); |
pic_enable_irqs(1<<IRQ_CLK); |
trap_register(VECTOR_CLK, i8254_interrupt); |
exc_register(VECTOR_CLK, "i8254_clock", i8254_interrupt); |
} |
#define LOOPS 150000 |
122,7 → 125,7 |
return; |
} |
void i8254_interrupt(__u8 n, __native stack[]) |
void i8254_interrupt(int n, void *stack) |
{ |
trap_virtual_eoi(); |
clock(); |