2006-09-07 16:12:30 +02:00
|
|
|
// x86 trap and interrupt constants.
|
|
|
|
|
|
|
|
// Processor-defined:
|
2006-09-06 21:08:14 +02:00
|
|
|
#define T_DIVIDE 0 // divide error
|
|
|
|
#define T_DEBUG 1 // debug exception
|
|
|
|
#define T_NMI 2 // non-maskable interrupt
|
|
|
|
#define T_BRKPT 3 // breakpoint
|
|
|
|
#define T_OFLOW 4 // overflow
|
|
|
|
#define T_BOUND 5 // bounds check
|
|
|
|
#define T_ILLOP 6 // illegal opcode
|
|
|
|
#define T_DEVICE 7 // device not available
|
|
|
|
#define T_DBLFLT 8 // double fault
|
|
|
|
// #define T_COPROC 9 // reserved (not used since 486)
|
|
|
|
#define T_TSS 10 // invalid task switch segment
|
|
|
|
#define T_SEGNP 11 // segment not present
|
|
|
|
#define T_STACK 12 // stack exception
|
2007-08-08 10:27:32 +02:00
|
|
|
#define T_GPFLT 13 // general protection fault
|
2006-09-06 21:08:14 +02:00
|
|
|
#define T_PGFLT 14 // page fault
|
|
|
|
// #define T_RES 15 // reserved
|
|
|
|
#define T_FPERR 16 // floating point error
|
|
|
|
#define T_ALIGN 17 // aligment check
|
|
|
|
#define T_MCHK 18 // machine check
|
|
|
|
#define T_SIMDERR 19 // SIMD floating point error
|
2006-06-15 18:02:20 +02:00
|
|
|
|
|
|
|
// These are arbitrarily chosen, but with care not to overlap
|
|
|
|
// processor defined exceptions or interrupt vectors.
|
2010-07-23 13:41:13 +02:00
|
|
|
#define T_SYSCALL 64 // system call
|
|
|
|
#define T_TLBFLUSH 65 // flush TLB
|
2006-09-06 21:08:14 +02:00
|
|
|
#define T_DEFAULT 500 // catchall
|
2006-06-28 18:35:03 +02:00
|
|
|
|
2009-07-12 03:17:32 +02:00
|
|
|
#define T_IRQ0 32 // IRQ 0 corresponds to int T_IRQ
|
2006-06-28 18:35:03 +02:00
|
|
|
|
2006-09-07 03:37:58 +02:00
|
|
|
#define IRQ_TIMER 0
|
2006-09-06 19:04:06 +02:00
|
|
|
#define IRQ_KBD 1
|
2009-05-31 02:24:11 +02:00
|
|
|
#define IRQ_COM1 4
|
2006-09-03 17:39:29 +02:00
|
|
|
#define IRQ_IDE 14
|
2006-06-28 18:35:03 +02:00
|
|
|
#define IRQ_ERROR 19
|
|
|
|
#define IRQ_SPURIOUS 31
|
2009-07-12 03:17:32 +02:00
|
|
|
|