Revision 00ea18d1
b/target-i386/op_helper.c | ||
---|---|---|
1191 | 1191 |
EIP = next_eip; |
1192 | 1192 |
} |
1193 | 1193 |
|
1194 |
#if !defined(CONFIG_USER_ONLY) |
|
1194 | 1195 |
static void handle_even_inj(int intno, int is_int, int error_code, |
1195 | 1196 |
int is_hw, int rm) |
1196 | 1197 |
{ |
... | ... | |
1209 | 1210 |
stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj), event_inj); |
1210 | 1211 |
} |
1211 | 1212 |
} |
1213 |
#endif |
|
1212 | 1214 |
|
1213 | 1215 |
/* |
1214 | 1216 |
* Begin execution of an interruption. is_int is TRUE if coming from |
... | ... | |
1250 | 1252 |
} |
1251 | 1253 |
} |
1252 | 1254 |
if (env->cr[0] & CR0_PE_MASK) { |
1255 |
#if !defined(CONFIG_USER_ONLY) |
|
1253 | 1256 |
if (env->hflags & HF_SVMI_MASK) |
1254 | 1257 |
handle_even_inj(intno, is_int, error_code, is_hw, 0); |
1258 |
#endif |
|
1255 | 1259 |
#ifdef TARGET_X86_64 |
1256 | 1260 |
if (env->hflags & HF_LMA_MASK) { |
1257 | 1261 |
do_interrupt64(intno, is_int, error_code, next_eip, is_hw); |
... | ... | |
1261 | 1265 |
do_interrupt_protected(intno, is_int, error_code, next_eip, is_hw); |
1262 | 1266 |
} |
1263 | 1267 |
} else { |
1268 |
#if !defined(CONFIG_USER_ONLY) |
|
1264 | 1269 |
if (env->hflags & HF_SVMI_MASK) |
1265 | 1270 |
handle_even_inj(intno, is_int, error_code, is_hw, 1); |
1271 |
#endif |
|
1266 | 1272 |
do_interrupt_real(intno, is_int, error_code, next_eip); |
1267 | 1273 |
} |
1268 | 1274 |
|
1275 |
#if !defined(CONFIG_USER_ONLY) |
|
1269 | 1276 |
if (env->hflags & HF_SVMI_MASK) { |
1270 | 1277 |
uint32_t event_inj = ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj)); |
1271 | 1278 |
stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj), event_inj & ~SVM_EVTINJ_VALID); |
1272 | 1279 |
} |
1280 |
#endif |
|
1273 | 1281 |
} |
1274 | 1282 |
|
1275 | 1283 |
/* This should come from sysemu.h - if we could include it here... */ |
Also available in: Unified diff