From 068368d0bedc34f561ab0c9dd614c02b346d1d4e Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Wed, 20 Jan 2010 22:18:02 +0100 Subject: Added IRQ-support and timer interrupt. --- kernel/idt.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'kernel/idt.c') diff --git a/kernel/idt.c b/kernel/idt.c index 5633c61..66e1fb8 100644 --- a/kernel/idt.c +++ b/kernel/idt.c @@ -73,6 +73,22 @@ isr_panic(29); isr_panic(30); isr_panic(31); +#include "irq.h" + +void tick() { + *(uint16_t*)(0xb8890) += 1; + irq_reset(); +} + + +asm( + ".globl isr_32\n" + "isr_32:\n" + "pusha\n" + "call tick\n" + "popa\n" + "iret\n" +); void idt_init() { idt_set_gate(0, (uint32_t)isr_0, 0x08, 0x8e00); @@ -108,6 +124,9 @@ void idt_init() { idt_set_gate(30, (uint32_t)isr_30, 0x08, 0x8e00); idt_set_gate(31, (uint32_t)isr_31, 0x08, 0x8e00); + void isr_32(); + idt_set_gate(32, (uint32_t)isr_32, 0x08, 0x8e00); + asm volatile( "lidt (%0)\n" : : "r" (&idtr) -- cgit v1.2.3