Revision 0ecfa993 cpu-i386.h
b/cpu-i386.h | ||
---|---|---|
1 |
/* NOTE: this header is included in op-i386.c where global register |
|
2 |
variable are used. Care must be used when including glibc headers. |
|
3 |
*/ |
|
1 | 4 |
#ifndef CPU_I386_H |
2 | 5 |
#define CPU_I386_H |
3 | 6 |
|
7 |
#include <setjmp.h> |
|
8 |
|
|
4 | 9 |
#define R_EAX 0 |
5 | 10 |
#define R_ECX 1 |
6 | 11 |
#define R_EDX 2 |
... | ... | |
43 | 48 |
#define VM_FLAG 0x20000 |
44 | 49 |
/* AC 0x40000 */ |
45 | 50 |
|
51 |
#define EXCP00_DIVZ 1 |
|
52 |
#define EXCP01_SSTP 2 |
|
53 |
#define EXCP02_NMI 3 |
|
54 |
#define EXCP03_INT3 4 |
|
55 |
#define EXCP04_INTO 5 |
|
56 |
#define EXCP05_BOUND 6 |
|
57 |
#define EXCP06_ILLOP 7 |
|
58 |
#define EXCP07_PREX 8 |
|
59 |
#define EXCP08_DBLE 9 |
|
60 |
#define EXCP09_XERR 10 |
|
61 |
#define EXCP0A_TSS 11 |
|
62 |
#define EXCP0B_NOSEG 12 |
|
63 |
#define EXCP0C_STACK 13 |
|
64 |
#define EXCP0D_GPF 14 |
|
65 |
#define EXCP0E_PAGE 15 |
|
66 |
#define EXCP10_COPR 17 |
|
67 |
#define EXCP11_ALGN 18 |
|
68 |
#define EXCP12_MCHK 19 |
|
69 |
|
|
70 |
#define EXCP_SIGNAL 256 /* async signal */ |
|
71 |
|
|
46 | 72 |
enum { |
47 | 73 |
CC_OP_DYNAMIC, /* must use dynamic code to get cc_op */ |
48 | 74 |
CC_OP_EFLAGS, /* all cc are explicitely computed, CC_SRC = flags */ |
... | ... | |
89 | 115 |
/* standard registers */ |
90 | 116 |
uint32_t regs[8]; |
91 | 117 |
uint32_t pc; /* cs_case + eip value */ |
92 |
|
|
93 |
/* eflags handling */ |
|
94 | 118 |
uint32_t eflags; |
119 |
|
|
120 |
/* emulator internal eflags handling */ |
|
95 | 121 |
uint32_t cc_src; |
96 | 122 |
uint32_t cc_dst; |
97 | 123 |
uint32_t cc_op; |
98 | 124 |
int32_t df; /* D flag : 1 if D = 0, -1 if D = 1 */ |
99 |
|
|
125 |
|
|
100 | 126 |
/* segments */ |
101 | 127 |
uint8_t *segs_base[6]; |
102 |
uint32_t segs[6]; |
|
103 | 128 |
|
104 | 129 |
/* FPU state */ |
105 |
CPU86_LDouble fpregs[8]; |
|
106 |
uint8_t fptags[8]; /* 0 = valid, 1 = empty */ |
|
107 | 130 |
unsigned int fpstt; /* top of stack index */ |
108 | 131 |
unsigned int fpus; |
109 | 132 |
unsigned int fpuc; |
133 |
uint8_t fptags[8]; /* 0 = valid, 1 = empty */ |
|
134 |
CPU86_LDouble fpregs[8]; |
|
135 |
|
|
136 |
/* segments */ |
|
137 |
uint32_t segs[6]; |
|
110 | 138 |
|
111 | 139 |
/* emulator internal variables */ |
140 |
|
|
112 | 141 |
CPU86_LDouble ft0; |
142 |
|
|
143 |
/* exception handling */ |
|
144 |
jmp_buf jmp_env; |
|
145 |
int exception_index; |
|
113 | 146 |
} CPUX86State; |
114 | 147 |
|
115 | 148 |
static inline int ldub(void *ptr) |
Also available in: Unified diff