From 51a6ac67b761182d67eeb2f625d8476a2e79e632 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 9 Jan 2010 17:56:48 +0100 Subject: Rudimentary interrupt handling. --- kernel/idt.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 kernel/idt.h (limited to 'kernel/idt.h') diff --git a/kernel/idt.h b/kernel/idt.h new file mode 100644 index 0000000..aafa477 --- /dev/null +++ b/kernel/idt.h @@ -0,0 +1,32 @@ +#ifndef IDT_H +#define IDT_H + +#include "types.h" + +typedef struct { + uint16_t base_low; + uint16_t segment; + uint16_t flags; + uint16_t base_high; +} __attribute__((packed)) idt_entry; + +typedef struct { + uint16_t limit; + idt_entry* base; +} __attribute__((packed)) idt_ptr; + +#define idt_entry_init(b, s, f) { \ + .base_low = (b & 0xffff), \ + .base_high = (b >> 16 & 0xffff), \ + .segment = (s), \ + .flags = (f)} + +#define idt_entry_null { \ + .base_low = 0, \ + .base_high = 0, \ + .segment = 0, \ + .flags = 0} + +void idt_init(); + +#endif -- cgit v1.2.3