Commit 97fa5ad9 by malcolm

Fixed up IDT files

parent ab42a3e9
Showing with 17 additions and 17 deletions
#include "idt.h"
struct idtr {
#include <string.h>
typedef struct{
uint16_t limit;
uint32_t base;
};
} idtr;
static struct idt_desc _idt [MAX_IDT_INT];
static struct idtr _idtr;
static idt_desc _idt [MAX_IDT_INT];
static idtr _idtr;
static void idt_install () {
//TODO: VOODOO MAGIC
}
static void _cdecl default_handler () {
static void default_handler () {
//DEBUG OUTPUT MAYBE?
for(;;);
}
idt_descriptor* get_ir (uint32_t i) {
idt_desc* get_ir (uint32_t i) {
if (i>MAX_IDT_INT)
return 0;
return &_idt[i];
}
int install_ir (uint32_t i, uint16_t flags, uint16_t sel, IRQ_HANDLER irq) {
int install_ir (uint32_t i, uint16_t flags, uint16_t code_sel, IRQ_HANDLER irq) {
if (i>MAX_IDT_INT)
return 0;
if (!irq)
return 0;
uint64_t uiBase = (uint64_t)&(*irq);
_idt[i].low_base = uint16_t(uiBase & 0xffff);
_idt[i].high_base = uint16_t((uiBase >> 16) & 0xffff);
_idt[i].low_base = (uint16_t)(uiBase & 0xffff);
_idt[i].high_base = (uint16_t)((uiBase >> 16) & 0xffff);
_idt[i].reserved = 0;
_idt[i].flags = uint8_t(flags);
_idt[i].code_sel = sel;
_idt[i].flags = (uint8_t)(flags);
_idt[i].code_sel = code_sel;
return 0;
}
int idt_init (uint16_t code_sel) {
_idtr.limit = sizeof (struct idt_desc) * MAX_IDT_INT -1;
_idtr.limit = sizeof (idt_desc) * MAX_IDT_INT -1;
_idtr.base = (uint32_t)&_idt[0];
memset ((void*)&_idt[0], 0, sizeof (idt_desc) * MAX_IDT_INT-1);
for (int i=0; i<MAX_IDT_INT; i++)
......
......@@ -13,18 +13,18 @@
#define IDT_PR 0x80
//voodoo magic. find out what it does.
typedef void (_cdecl *IRQ_HANDLER)(void);
typedef void (*IRQ_HANDLER)(void);
struct idt_desc{
typedef struct {
uint16_t low_base;
uint16_t code_sel;
uint8_t reserved;
uint8_t flags;
uint16_t high_base;
};
} idt_desc;
extern idt_desc* get_ir (uint32_t i);
extern int install_ir (uint32_t i, uint16_t flags, uint16_c code_sel, IRQ_HANDLER);
extern int install_ir (uint32_t i, uint16_t flags, uint16_t code_sel, IRQ_HANDLER);
extern int idt_init (uint16_t code_sel);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment