void HalIsrInstall(void) { HalSetIDTGate(0, (uint32_t) HalIsr0, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(1, (uint32_t) HalIsr1, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(2, (uint32_t) HalIsr2, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(3, (uint32_t) HalIsr3, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(4, (uint32_t) HalIsr4, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(5, (uint32_t) HalIsr5, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(6, (uint32_t) HalIsr6, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(7, (uint32_t) HalIsr7, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(8, (uint32_t) HalIsr8, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(9, (uint32_t) HalIsr9, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(10, (uint32_t) HalIsr10, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(11, (uint32_t) HalIsr11, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(12, (uint32_t) HalIsr12, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(13, (uint32_t) HalIsr13, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(14, (uint32_t) HalIsr14, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(15, (uint32_t) HalIsr15, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(16, (uint32_t) HalIsr16, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(17, (uint32_t) HalIsr17, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(18, (uint32_t) HalIsr18, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(19, (uint32_t) HalIsr19, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(20, (uint32_t) HalIsr20, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(21, (uint32_t) HalIsr21, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(22, (uint32_t) HalIsr22, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(23, (uint32_t) HalIsr23, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(24, (uint32_t) HalIsr24, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(25, (uint32_t) HalIsr25, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(26, (uint32_t) HalIsr26, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(27, (uint32_t) HalIsr27, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(28, (uint32_t) HalIsr28, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(29, (uint32_t) HalIsr29, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(30, (uint32_t) HalIsr30, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(31, (uint32_t) HalIsr31, 0x8, 0, 0, IDT_INTR32); }
void HalInitializeSyscalls() { // Register our syscall handler. HalSetIDTGate(SYSCALL_INTERRUPT, (uint32_t) HalIsrSyscall, 0x08, 0x8E, 0, IDT_INTR32); }
/* We first remap the interrupt controllers, and then we install * the appropriate ISRs to the correct entries in the IDT. This * is just like installing the exception handlers */ void HalIrqInstall(void) { HalIrqRemap(); HalSetIDTGate(32, (uint32_t) HalIrq0, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(33, (uint32_t) HalIrq1, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(34, (uint32_t) HalIrq2, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(35, (uint32_t) HalIrq3, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(36, (uint32_t) HalIrq4, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(37, (uint32_t) HalIrq5, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(38, (uint32_t) HalIrq6, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(39, (uint32_t) HalIrq7, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(40, (uint32_t) HalIrq8, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(41, (uint32_t) HalIrq9, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(42, (uint32_t) HalIrq10, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(43, (uint32_t) HalIrq11, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(44, (uint32_t) HalIrq12, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(45, (uint32_t) HalIrq13, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(46, (uint32_t) HalIrq14, 0x8, 0, 0, IDT_INTR32); HalSetIDTGate(47, (uint32_t) HalIrq15, 0x8, 0, 0, IDT_INTR32); }