Changeset 54080 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Feb 5, 2015 10:50:41 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r54075 r54080 149 149 * 150 150 * We need to intercept all exceptions manually except: 151 * - #NM, #MF handled separately, see hmR0VmxLoadSharedCR0(). 151 * - #NM, #MF handled in hmR0VmxLoadSharedCR0(). 152 * - #DB handled in hmR0VmxLoadSharedDebugState(). 152 153 * - #PF need not be intercepted even in real-mode if we have Nested Paging 153 154 * support. 154 155 */ 155 #define HMVMX_REAL_MODE_XCPT_MASK ( RT_BIT(X86_XCPT_DE) | RT_BIT(X86_XCPT_DB)| RT_BIT(X86_XCPT_NMI) \156 #define HMVMX_REAL_MODE_XCPT_MASK ( RT_BIT(X86_XCPT_DE) /* RT_BIT(X86_XCPT_DB) */ | RT_BIT(X86_XCPT_NMI) \ 156 157 | RT_BIT(X86_XCPT_BP) | RT_BIT(X86_XCPT_OF) | RT_BIT(X86_XCPT_BR) \ 157 158 | RT_BIT(X86_XCPT_UD) /* RT_BIT(X86_XCPT_NM) */ | RT_BIT(X86_XCPT_DF) \ … … 3773 3774 fInterceptMF = true; 3774 3775 } 3776 else 3777 pVCpu->hm.s.vmx.u32XcptBitmap &= ~HMVMX_REAL_MODE_XCPT_MASK; 3775 3778 3776 3779 if (fInterceptNM) … … 4212 4215 * Update the exception bitmap regarding intercepting #DB generated by the guest. 4213 4216 */ 4214 if (fInterceptDB) 4217 if ( fInterceptDB 4218 || pVCpu->hm.s.vmx.RealMode.fRealOnV86Active) 4215 4219 pVCpu->hm.s.vmx.u32XcptBitmap |= RT_BIT(X86_XCPT_DB); 4216 else if (!pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)4220 else 4217 4221 { 4218 4222 #ifndef HMVMX_ALWAYS_TRAP_ALL_XCPTS … … 10979 10983 AssertRCReturn(rc2, rc2); 10980 10984 } 10981 else if (rc == VINF_PGM_CHANGE_MODE)10982 {10983 /*10984 * Clear the exception-mask here rather than messing with it in hmR0VmxLoadSharedCR0(). Since the fRealOnV86Active10985 * state may be changed now. Re-evaluate the necessary intercepts when we return to VT-x execution via10986 * hmR0VmxLoadSharedCR0() and hmR0VmxLoadSharedDebugState(), see @bugref{7626}.10987 */10988 hmR0VmxInitXcptBitmap(pVM, pVCpu);10989 }10990 10985 10991 10986 STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitMovCRx, y2);
Note:
See TracChangeset
for help on using the changeset viewer.