Changeset 47718 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- Aug 14, 2013 10:33:22 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r47687 r47718 3336 3336 else 3337 3337 { 3338 pMixedCtx->eflags.u32 |= X86_EFL_TF; 3339 pVCpu->hm.s.fClearTrapFlag = true; 3340 pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_RFLAGS; 3338 3341 fInterceptDB = true; 3339 pMixedCtx->eflags.u32 |= X86_EFL_TF;3340 pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_GUEST_RFLAGS;3341 3342 } 3342 3343 } … … 6081 6082 6082 6083 /** 6084 * Take necessary actions before going back to ring-3. 6085 * 6083 6086 * An action requires us to go back to ring-3. This function does the necessary 6084 6087 * steps before we can safely return to ring-3. This is not the same as longjmps … … 6151 6154 else 6152 6155 pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_HOST_CONTEXT | HM_CHANGED_ALL_GUEST; 6156 6157 /* Make sure we've undo the trap flag if we tried to single step something. */ 6158 if (pVCpu->hm.s.fClearTrapFlag) 6159 { 6160 pVCpu->hm.s.fClearTrapFlag = false; 6161 pMixedCtx->eflags.Bits.u1TF = 0; 6162 } 6153 6163 6154 6164 STAM_COUNTER_INC(&pVCpu->hm.s.StatSwitchExitToR3); … … 9653 9663 AssertRCReturn(rc, rc); 9654 9664 9655 /* If we sat the trap flag above, we have to clear it. */ /** @todo HM should remember what it does and possibly do this elsewhere! */ 9656 if ( (pVCpu->hm.s.fSingleInstruction || DBGFIsStepping(pVCpu)) 9657 && !(pVCpu->CTX_SUFF(pVM)->hm.s.vmx.msr.vmx_proc_ctls.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG)) 9665 /* If we sat the trap flag above, we have to clear it. */ 9666 if (pVCpu->hm.s.fClearTrapFlag) 9667 { 9668 pVCpu->hm.s.fClearTrapFlag = false; 9658 9669 pMixedCtx->eflags.Bits.u1TF = 0; 9670 } 9659 9671 9660 9672 /* Refer Intel spec. Table 27-1. "Exit Qualifications for debug exceptions" for the format. */
Note:
See TracChangeset
for help on using the changeset viewer.