144 |
145 |
145 struct x86_emulate_ctxt { |
146 struct x86_emulate_ctxt { |
146 /* Register state before/after emulation. */ |
147 /* Register state before/after emulation. */ |
147 struct kvm_vcpu *vcpu; |
148 struct kvm_vcpu *vcpu; |
148 |
149 |
149 /* Linear faulting address (if emulating a page-faulting instruction) */ |
|
150 unsigned long eflags; |
150 unsigned long eflags; |
151 |
|
152 /* Emulated execution mode, represented by an X86EMUL_MODE value. */ |
151 /* Emulated execution mode, represented by an X86EMUL_MODE value. */ |
153 int mode; |
152 int mode; |
154 |
|
155 u32 cs_base; |
153 u32 cs_base; |
156 |
154 |
157 /* decode cache */ |
155 /* decode cache */ |
158 |
|
159 struct decode_cache decode; |
156 struct decode_cache decode; |
160 }; |
157 }; |
161 |
158 |
162 /* Repeat String Operation Prefix */ |
159 /* Repeat String Operation Prefix */ |
163 #define REPE_PREFIX 1 |
160 #define REPE_PREFIX 1 |
164 #define REPNE_PREFIX 2 |
161 #define REPNE_PREFIX 2 |
165 |
162 |
166 /* Execution mode, passed to the emulator. */ |
163 /* Execution mode, passed to the emulator. */ |
167 #define X86EMUL_MODE_REAL 0 /* Real mode. */ |
164 #define X86EMUL_MODE_REAL 0 /* Real mode. */ |
168 #define X86EMUL_MODE_PROT16 2 /* 16-bit protected mode. */ |
165 #define X86EMUL_MODE_PROT16 2 /* 16-bit protected mode. */ |
169 #define X86EMUL_MODE_PROT32 4 /* 32-bit protected mode. */ |
166 #define X86EMUL_MODE_PROT32 4 /* 32-bit protected mode. */ |
170 #define X86EMUL_MODE_PROT64 8 /* 64-bit (long) mode. */ |
167 #define X86EMUL_MODE_PROT64 8 /* 64-bit (long) mode. */ |
171 |
168 |
172 /* Host execution mode. */ |
169 /* Host execution mode. */ |
173 #if defined(__i386__) |
170 #if defined(CONFIG_X86_32) |
174 #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32 |
171 #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32 |
175 #elif defined(CONFIG_X86_64) |
172 #elif defined(CONFIG_X86_64) |
176 #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT64 |
173 #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT64 |
177 #endif |
174 #endif |
178 |
175 |