Changeset 50284 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- Jan 30, 2014 12:13:45 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r50275 r50284 11173 11173 { 11174 11174 Log4(("POPF CS:RIP %04x:%#RX64\n", pMixedCtx->cs.Sel, pMixedCtx->rip)); 11175 uint32_t cbParm = 0;11176 uint32_t uMask = 0;11177 bool f AlreadyStepping = RT_BOOL(pMixedCtx->eflags.Bits.u1TF);11175 uint32_t cbParm; 11176 uint32_t uMask; 11177 bool fStepping = RT_BOOL(pMixedCtx->eflags.Bits.u1TF); 11178 11178 if (pDis->fPrefix & DISPREFIX_OPSIZE) 11179 11179 { … … 11213 11213 | HM_CHANGED_GUEST_RSP 11214 11214 | HM_CHANGED_GUEST_RFLAGS); 11215 11216 /* Only generate a debug execption after POPF if the guest is already stepping over POPF and 11217 POPF restores EFLAGS.TF. The CPU looks at the EFLAGS.TF after the instruction is done manipulating it. */ 11218 if ( fAlreadyStepping 11219 && pMixedCtx->eflags.Bits.u1TF) 11220 { 11215 /* Generate a pending-debug exception when stepping over POPF regardless of how POPF modifies EFLAGS.TF. */ 11216 if (fStepping) 11221 11217 hmR0VmxSetPendingDebugXcpt(pVCpu, pMixedCtx); 11222 }11223 11218 11224 11219 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitPopf); … … 11228 11223 case OP_PUSHF: 11229 11224 { 11230 uint32_t cbParm = 0;11231 uint32_t uMask = 0;11225 uint32_t cbParm; 11226 uint32_t uMask; 11232 11227 if (pDis->fPrefix & DISPREFIX_OPSIZE) 11233 11228 { … … 11277 11272 RTGCPTR GCPtrStack = 0; 11278 11273 uint32_t uMask = 0xffff; 11274 bool fStepping = RT_BOOL(pMixedCtx->eflags.Bits.u1TF); 11279 11275 uint16_t aIretFrame[3]; 11280 bool fAlreadyStepping = RT_BOOL(pMixedCtx->eflags.Bits.u1TF);11281 11276 if (pDis->fPrefix & (DISPREFIX_OPSIZE | DISPREFIX_ADDRSIZE)) 11282 11277 { … … 11305 11300 | HM_CHANGED_GUEST_RSP 11306 11301 | HM_CHANGED_GUEST_RFLAGS); 11307 11308 /* Only generate a debug execption after IRET if the guest is already stepping over IRET and 11309 IRET restores EFLAGS.TF. The CPU looks at the EFLAGS.TF after the instruction is done manipulating it. */ 11310 if ( fAlreadyStepping 11311 && pMixedCtx->eflags.Bits.u1TF) 11312 { 11302 /* Generate a pending-debug exception when stepping over IRET regardless of how IRET modifies EFLAGS.TF. */ 11303 if (fStepping) 11313 11304 hmR0VmxSetPendingDebugXcpt(pVCpu, pMixedCtx); 11314 }11315 11316 11305 Log4(("IRET %#RX32 to %04x:%x\n", GCPtrStack, pMixedCtx->cs.Sel, pMixedCtx->ip)); 11317 11306 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIret);
Note:
See TracChangeset
for help on using the changeset viewer.