Changeset 75916 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Dec 3, 2018 4:53:18 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r75884 r75916 1826 1826 /* Nothing to do for SMI/enclave. We don't support enclaves or SMM yet. */ 1827 1827 1828 /* Pending debug exceptions. */ 1828 /* 1829 * Pending debug exceptions. 1830 */ 1829 1831 if ( uExitReason != VMX_EXIT_INIT_SIGNAL 1830 1832 && uExitReason != VMX_EXIT_SMI … … 1835 1837 * block-by-MovSS is in effect. */ 1836 1838 pVmcs->u64GuestPendingDbgXcpt.u = 0; 1839 } 1840 else 1841 { 1842 /* 1843 * Pending debug exception field is identical to DR6 except the RTM bit (16) which needs to be flipped. 1844 * The "enabled breakpoint" bit (12) is not present in DR6, so we need to update it here. 1845 * 1846 * See Intel spec. 24.4.2 "Guest Non-Register State". 1847 */ 1848 uint64_t fPendingDbgMask = pVCpu->cpum.GstCtx.dr[6]; 1849 uint64_t const fBpHitMask = VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BP0 | VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BP1 1850 | VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BP2 | VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BP3; 1851 if (fPendingDbgMask & fBpHitMask) 1852 fPendingDbgMask |= VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_EN_BP; 1853 fPendingDbgMask ^= VMX_VMCS_GUEST_PENDING_DEBUG_RTM; 1854 pVmcs->u64GuestPendingDbgXcpt.u = fPendingDbgMask; 1837 1855 } 1838 1856
Note:
See TracChangeset
for help on using the changeset viewer.