From a6efba7a22b85c0556c8c262f3bbcaf7bda7ddfa Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 3 Sep 2014 14:04:12 +0200 Subject: Moved kernel to 0x10000 ! --- kernel/interrupts.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'kernel/interrupts.c') diff --git a/kernel/interrupts.c b/kernel/interrupts.c index 0852812..198fe11 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -27,19 +27,6 @@ static struct idt_desc } idtd; -// disable interrupts -void int_disable() -{ - __asm__("cli"); -} - -// enable interrupts -void int_enable() -{ - __asm__("sti"); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"up and running"); -} - void int_generate88() { @@ -102,11 +89,10 @@ void int_irq18(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Machine Check"); X8 void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr) { - uint64_t base=(uint64_t)&(*addr); // TODO! + uint64_t base=(uint64_t)&(*addr); idt[irq].addrLo = base & 0xffff; idt[irq].addrHi = (base >> 16) & 0xffff; - idt[irq].addrHi = 0x0; idt[irq].zeros=0; idt[irq].flags=flags; idt[irq].sel=sel; @@ -150,13 +136,13 @@ void int_init(uint16_t sel) void int_install() { + idtd.size=sizeof(struct int_desc)*INT_MAX; - idtd.size=sizeof(struct int_desc)*INT_MAX; //TODO - idtd.baseHi=0x0000; - idtd.baseLo=&idt[0]; + uint32_t addr=&idt[0]; + idtd.baseHi=addr>>16; + idtd.baseLo=0xffff&addr; __asm__("lidt %0"::"m" (idtd)); - } /* //print interrupt table; //TODO! -- cgit v1.2.3