]> git.dujemihanovic.xyz Git - nameless-os.git/blobdiff - kernel/arch/x86/irq/idt.c
Rework interrupt handling
[nameless-os.git] / kernel / arch / x86 / irq / idt.c
index 54e8612934ffd9f08751d84cebb59ae5ec1d2227..3871751061001c62d71091d3b24eea1fedf0e880 100644 (file)
@@ -7,17 +7,17 @@ inline void load_idt(struct idtr idtr)
        asm volatile ("lidt %0": : "m" (idtr));
 }
 
-void idt_set_descriptor(struct idt_descriptor *idt, uint8_t vector, uint16_t segment, uint32_t offset, uint8_t type, uint8_t dpl)
+void idt_set_descriptor(struct idt_descriptor *idt, uint8_t vector, uint16_t segment, void (*offset)(void), uint8_t type, uint8_t dpl)
 {
        struct idt_descriptor *descriptor = &idt[vector];
 
-       descriptor->offset_1 = offset & 0xFFFF;
+       descriptor->offset_1 = (uint32_t) offset & 0xFFFF;
        descriptor->segsel = segment;
        descriptor->unused = 0;
        descriptor->type = type;
        descriptor->dpl = dpl;
        descriptor->present = 1;
-       descriptor->offset_2 = offset >> 16;
+       descriptor->offset_2 = (uint32_t) offset >> 16;
 }
 
 inline void populate_idtr(struct idtr *idtr, struct idt_descriptor *idt)