diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-01-09 17:56:48 +0100 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-01-09 17:56:48 +0100 |
commit | 51a6ac67b761182d67eeb2f625d8476a2e79e632 (patch) | |
tree | 829809e758bfd3e0005dc0905ac9ad4cbf5f0ef9 /kernel/idt.h | |
parent | 5fe4102bc546b95d42d357f418f64c372d26b903 (diff) |
Rudimentary interrupt handling.
Diffstat (limited to 'kernel/idt.h')
-rw-r--r-- | kernel/idt.h | 32 |
1 files changed, 32 insertions, 0 deletions
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 |