2014-06-30 15:52:35 -07:00

74 lines
1.4 KiB
C

#ifndef __TRAP_H__
#define __TRAP_H__
#define T_DE 0
#define T_DB 1
#define T_NMI 2
#define T_BP 3
#define T_OF 4
#define T_BR 5
#define T_UD 6
#define T_NM 7
#define T_DF 8
#define T_TS 10
#define T_NP 11
#define T_SS 12
#define T_GP 13
#define T_PF 14
#define T_MF 16
#define T_AC 17
#define T_MC 18
#define T_XF 19
#define T_VE 20
#define T_CPU_LAST T_VE
#define T_IRQ_BASE 32
#define T_IRQ_LEN 24
#define T_IRQ_MAX (T_IRQ_BASE + T_IRQ_LEN - 1)
#define T_IRQ_TIMER (T_IRQ_BASE + 0)
#define T_IRQ_KBD (T_IRQ_BASE + 1)
#define T_IRQ_COM1 (T_IRQ_BASE + 4)
#define T_IRQ_SPURIOUS (T_IRQ_BASE + 24)
#define T_MAX 64
typedef struct TrapFrame
{
uint64_t r15;
uint64_t r14;
uint64_t r13;
uint64_t r12;
uint64_t r11;
uint64_t r10;
uint64_t r9;
uint64_t r8;
uint64_t rbp;
uint64_t rdi;
uint64_t rsi;
uint64_t rdx;
uint64_t rcx;
uint64_t rbx;
uint64_t rax;
uint64_t vector;
uint32_t errcode;
uint32_t _unused0;
uint64_t rip;
uint16_t cs;
uint16_t _unused1;
uint16_t _unused2;
uint16_t _unused3;
uint64_t rflags;
uint64_t rsp;
uint16_t ss;
uint16_t _unused4;
uint16_t _unused5;
uint16_t _unused6;
} TrapFrame;
#endif /* __TRAP_H__ */