60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
#ifndef __IDT_H
|
|
#define __IDT_H
|
|
|
|
#include "os.h"
|
|
|
|
typedef enum {
|
|
IDT_TYPE_TASK = 5,
|
|
IDT_TYPE_16_INTERRUPT = 6,
|
|
IDT_TYPE_16_TRAP = 7,
|
|
IDT_TYPE_INTERRUPT = 14,
|
|
IDT_TYPE_TRAP = 15,
|
|
} idt_type;
|
|
|
|
typedef void (*idt_handler)(int irq);
|
|
|
|
u64 idt_create(void* handler,int type);
|
|
void idt_setup(void* int_handler,idt_handler handler,int idx,int type);
|
|
int idt_irq_by_addr(void* addr);
|
|
|
|
void idt_handler_entry(void* addr);
|
|
|
|
void idt_install();
|
|
extern void _idt_install(void* idt,int limit);
|
|
|
|
void idt_enable_interrupts();
|
|
|
|
extern void _int0_handler();
|
|
extern void _int1_handler();
|
|
extern void _int2_handler();
|
|
extern void _int3_handler();
|
|
extern void _int4_handler();
|
|
extern void _int5_handler();
|
|
extern void _int6_handler();
|
|
extern void _int7_handler();
|
|
extern void _int8_handler();
|
|
extern void _int9_handler();
|
|
extern void _int10_handler();
|
|
extern void _int11_handler();
|
|
extern void _int12_handler();
|
|
extern void _int13_handler();
|
|
extern void _int14_handler();
|
|
extern void _int15_handler();
|
|
extern void _int16_handler();
|
|
extern void _int17_handler();
|
|
extern void _int18_handler();
|
|
extern void _int19_handler();
|
|
extern void _int20_handler();
|
|
extern void _int21_handler();
|
|
extern void _int22_handler();
|
|
extern void _int23_handler();
|
|
extern void _int24_handler();
|
|
extern void _int25_handler();
|
|
extern void _int26_handler();
|
|
extern void _int27_handler();
|
|
extern void _int28_handler();
|
|
extern void _int29_handler();
|
|
extern void _int30_handler();
|
|
extern void _int31_handler();
|
|
|
|
#endif
|