blob: 2183d59b531dc6f90b80e2fb72b7336aa10a05f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#ifndef _UREG_H_
#define _UREG_H_
/* See intel-sys.pdf section 5.12, "Exception and Interrupt Reference" */
#define SWEXN_CAUSE_DIVIDE 0x00 /* Very clever, Intel */
#define SWEXN_CAUSE_DEBUG 0x01
#define SWEXN_CAUSE_BREAKPOINT 0x03
#define SWEXN_CAUSE_OVERFLOW 0x04
#define SWEXN_CAUSE_BOUNDCHECK 0x05
#define SWEXN_CAUSE_OPCODE 0x06 /* SIGILL */
#define SWEXN_CAUSE_NOFPU 0x07 /* FPU missing/disabled/busy */
#define SWEXN_CAUSE_SEGFAULT 0x0B /* segment not present */
#define SWEXN_CAUSE_STACKFAULT 0x0C /* ouch */
#define SWEXN_CAUSE_PROTFAULT 0x0D /* aka GPF */
#define SWEXN_CAUSE_PAGEFAULT 0x0E /* cr2 is valid! */
#define SWEXN_CAUSE_FPUFAULT 0x10 /* old x87 FPU is angry */
#define SWEXN_CAUSE_ALIGNFAULT 0x11
#define SWEXN_CAUSE_SIMDFAULT 0x13 /* SSE/SSE2 FPU is angry */
#ifndef ASSEMBLER
typedef struct ureg_t {
unsigned int cause;
unsigned int cr2; /* Or else zero. */
unsigned int ds;
unsigned int es;
unsigned int fs;
unsigned int gs;
unsigned int edi;
unsigned int esi;
unsigned int ebp;
unsigned int zero; /* Dummy %esp, set to zero */
unsigned int ebx;
unsigned int edx;
unsigned int ecx;
unsigned int eax;
unsigned int error_code;
unsigned int eip;
unsigned int cs;
unsigned int eflags;
unsigned int esp;
unsigned int ss;
} ureg_t;
#endif /* ASSEMBLER */
#endif /* _UREG_H_ */
|