- Timestamp:
- May 21, 2019 4:16:30 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r78632 r78639 12715 12715 case VMX_EXIT_MWAIT: 12716 12716 case VMX_EXIT_MONITOR: 12717 case VMX_EXIT_TASK_SWITCH:12718 12717 case VMX_EXIT_PREEMPT_TIMER: 12719 12718 … … 12753 12752 else 12754 12753 rcStrict = hmR0VmxExitWrmsr(pVCpu, pVmxTransient); 12754 break; 12755 } 12756 12757 case VMX_EXIT_TASK_SWITCH: 12758 { 12759 int rc = hmR0VmxReadExitQualVmcs(pVCpu, pVmxTransient); 12760 rc |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 12761 rc |= hmR0VmxReadIdtVectoringInfoVmcs(pVmxTransient); 12762 if (VMX_IDT_VECTORING_INFO_IS_VALID(pVmxTransient->uIdtVectoringInfo)) 12763 rc |= hmR0VmxReadIdtVectoringErrorCodeVmcs(pVmxTransient); 12764 else 12765 { 12766 pVmxTransient->uIdtVectoringInfo = 0; 12767 pVmxTransient->uIdtVectoringErrorCode = 0; 12768 } 12769 AssertRCReturn(rc, rc); 12770 12771 VMXVEXITINFO ExitInfo; 12772 RT_ZERO(ExitInfo); 12773 ExitInfo.cbInstr = pVmxTransient->cbInstr; 12774 ExitInfo.u64Qual = pVmxTransient->uExitQual; 12775 12776 VMXVEXITEVENTINFO ExitEventInfo; 12777 RT_ZERO(ExitInfo); 12778 ExitEventInfo.uIdtVectoringInfo = pVmxTransient->uIdtVectoringInfo; 12779 ExitEventInfo.uIdtVectoringErrCode = pVmxTransient->uIdtVectoringErrorCode; 12780 12781 rcStrict = IEMExecVmxVmexitTaskSwitch(pVCpu, &ExitInfo, &ExitEventInfo); 12755 12782 break; 12756 12783 }
Note:
See TracChangeset
for help on using the changeset viewer.