74 lines
1.4 KiB
C
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__ */
|
|
|