lenochka/loader/idt.h
2019-03-29 00:27:42 +02:00

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