00001 #ifndef INTERRUPT_H 00002 #define INTERRUPT_H 00003 00004 #define IDT_P 1 // present 00005 #define IDT_SELECTOR 0x0008 // the same with cs selector 00006 00007 #define DPL_0 0 // highest 00008 #define DPL_1 1 00009 #define DPL_2 2 00010 #define DPL_3 3 00011 00012 #define INT_CPU_DIVIDE_BY_0 0x00 00013 #define INT_CPU_SINGLE_STEP 0x01 00014 #define INT_CPU_NMI 0x02 00015 #define INT_CPU_BREAKPOINT 0x03 00016 #define INT_CPU_OVERFLOW 0x04 00017 #define INT_CPU_BOUND 0x05 00018 #define INT_CPU_INVALID_OPCODE 0x06 00019 #define INT_CPU_NO_FPU 0x07 00020 #define INT_CPU_DOUBLE_FAULT 0x08 00021 #define INT_CPU_FPU_SEGMENT_OVERFLOW 0x09 00022 #define INT_CPU_INVAL_TSS 0x0A 00023 #define INT_CPU_INVALID_SEGMENT 0x0B 00024 #define INT_CPU_STACK_FAULT 0x0C 00025 #define INT_CPU_PROTECTION 0x0D 00026 #define INT_CPU_PAGE_FAULT 0x0E 00027 #define INT_CPU_UNDEFINE 0x0F //undefine is not cpu fault 00028 #define INT_CPU_FPU_ERROR 0x10 00029 #define INT_CPU_ALIGNMENT_ERROR 0x11 00030 #define INT_CPU_MACHINE_ERROR 0x12 00031 #define INT_CPU_SIMD_ERROR 0x13 00032 00033 #define INT_VECTOR_IRQ0 0x20 00034 #define INT_VECTOR_IRQ8 0x28 00035 00036 #define INT_VECTOR_OS_CSW 0x30 // CSW is breaf of context switch 00037 00038 #define CALL_GATE_16 4 00039 #define TASK_GATE 5 00040 #define INT_GATE_16 6 00041 #define TRAP_GATE_16 7 00042 #define CALL_GATE_32 12 00043 #define INT_GATE_32 14 00044 #define TRAP_GATE_32 15 00045 00046 00047 // interrupt requests definition 00048 #define IRQ0_TIMER 0 00049 #define IRQ1_KEYBOARD 1 00050 #define IRQ2_PIC_SLACE 2 00051 #define IRQ3_COM2 3 00052 #define IRQ4_COM1 4 00053 #define IRQ5_LPT2 5 00054 #define IRQ6_FDC 6 00055 #define IRQ7_LPT1 7 00056 00057 #define IRQ8_RTC 8 00058 #define IRQ9_REDIR_IRQ2 9 00059 #define IRQ10_USER 10 00060 #define IRQ11_USER 11 00061 #define IRQ12_USER 12 00062 #define IRQ13_FPU 13 00063 #define IRQ14_HDC 14 00064 #define IRQ15_RESERVE 15 00065 00066 void InterruptCpuIntHandlerSet(U8 IntNumber,INT_HANDLER IntHandler); 00067 void InterruptSoftwareIntHandlerSet(U8 IntNumber,INT_HANDLER IntHandler); 00068 void InterruptIrqHandlerSet(U8 IrqNumber,INT_HANDLER IrqHandler); 00069 void InterruptIdtEntrySet(U8 IntNumber,U8 IdtType,INT_HANDLER Handler,U8 IdtDpl); 00070 void InterruptIdtTableFill(void); 00071 00072 void InterruptIrq0Handler(void); 00073 void InterruptIrq1Handler(void); 00074 void InterruptIrq2Handler(void); 00075 void InterruptIrq3Handler(void); 00076 void InterruptIrq4Handler(void); 00077 void InterruptIrq5Handler(void); 00078 void InterruptIrq6Handler(void); 00079 void InterruptIrq7Handler(void); 00080 void InterruptIrq8Handler(void); 00081 void InterruptIrq9Handler(void); 00082 void InterruptIrq10Handler(void); 00083 void InterruptIrq11Handler(void); 00084 void InterruptIrq12Handler(void); 00085 void InterruptIrq13Handler(void); 00086 void InterruptIrq14Handler(void); 00087 void InterruptIrq15Handler(void); 00088 00089 void InterruptCpuInt0Handler(void); 00090 void InterruptCpuInt1Handler(void); 00091 void InterruptCpuInt2Handler(void); 00092 void InterruptCpuInt3Handler(void); 00093 void InterruptCpuInt4Handler(void); 00094 void InterruptCpuInt5Handler(void); 00095 void InterruptCpuInt6Handler(void); 00096 void InterruptCpuInt7Handler(void); 00097 void InterruptCpuInt8Handler(void); 00098 void InterruptCpuInt9Handler(void); 00099 void InterruptCpuInt10Handler(void); 00100 void InterruptCpuInt11Handler(void); 00101 void InterruptCpuInt12Handler(void); 00102 void InterruptCpuInt13Handler(void); 00103 void InterruptCpuInt14Handler(void); 00104 void InterruptCpuInt15Handler(void); 00105 void InterruptCpuInt16Handler(void); 00106 void InterruptCpuInt17Handler(void); 00107 void InterruptCpuInt18Handler(void); 00108 void InterruptCpuInt19Handler(void); 00109 00110 void InterruptSoftwareInt48Handler(void); 00111 00112 #endif
1.5.9