blob: 010899197486e1ebea8c97d77bd146e4f53bea30 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <stdint.h>
#include <string.h>
#include "idt.h"
#include "isr.h"
#include "irq.h"
void idt_set_gate(uint8_t idx, uint32_t base, uint16_t sel, uint8_t flags)
{
idt[idx].base_lo = base & 0xFFFF;
idt[idx].base_hi = base >> 16;
idt[idx].sel = sel;
idt[idx].zero = 0;
idt[idx].flags = flags;
}
void idt_init(void)
{
idt_pt.limit = sizeof(idt) - 1;
idt_pt.base = (uint32_t)&idt;
memset(&idt, 0, sizeof(idt));
idt_flush((uint32_t)&idt_pt);
}
|