Changeset 45884 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 2, 2013 9:30:28 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r45872 r45884 5210 5210 } 5211 5211 5212 return rc; 5213 } 5214 5215 5216 /** 5217 * Saves the guest descriptor table registers and task register from the current 5218 * VMCS into the guest-CPU context. 5219 * 5220 * @returns VBox status code. 5221 * @param pVCpu Pointer to the VMCPU. 5222 * @param pMixedCtx Pointer to the guest-CPU context. The data maybe 5223 * out-of-sync. Make sure to update the required fields 5224 * before using them. 5225 * 5226 * @remarks No-long-jump zone!!! 5227 */ 5228 static int hmR0VmxSaveGuestTableRegs(PVMCPU pVCpu, PCPUMCTX pMixedCtx) 5229 { 5230 int rc = VINF_SUCCESS; 5231 5212 5232 /* Guest LDTR. */ 5213 5233 if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_LDTR)) … … 5331 5351 rc = hmR0VmxSaveGuestSegmentRegs(pVCpu, pMixedCtx); 5332 5352 AssertLogRelMsgRCReturn(rc, ("hmR0VmxSaveGuestSegmentRegs failed! rc=%Rrc (pVCpu=%p)\n", rc, pVCpu), rc); 5353 5354 rc = hmR0VmxSaveGuestTableRegs(pVCpu, pMixedCtx); 5355 AssertLogRelMsgRCReturn(rc, ("hmR0VmxSaveGuestTableRegs failed! rc=%Rrc (pVCpu=%p)\n", rc, pVCpu), rc); 5333 5356 5334 5357 rc = hmR0VmxSaveGuestDebugRegs(pVCpu, pMixedCtx); … … 6118 6141 Assert(pVM->hm.s.vmx.pRealModeTSS); 6119 6142 6120 /* Save the required guest state bits from the VMCS. */6143 /* We require RIP, RSP, RFLAGS, CS, IDTR. Save the required ones from the VMCS. */ 6121 6144 rc = hmR0VmxSaveGuestSegmentRegs(pVCpu, pMixedCtx); 6145 rc |= hmR0VmxSaveGuestTableRegs(pVCpu, pMixedCtx); 6122 6146 rc |= hmR0VmxSaveGuestRipRspRflags(pVCpu, pMixedCtx); 6123 6147 AssertRCReturn(rc, rc); 6148 Assert(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_RIP); 6124 6149 6125 6150 /* Check if the interrupt handler is present in the IVT (real-mode IDT). IDT limit is (4N - 1). */ … … 8457 8482 8458 8483 int rc = hmR0VmxReadExitQualificationVmcs(pVCpu, pVmxTransient); 8459 rc |= hmR0VmxSaveGuestSegmentRegs(pVCpu, pMixedCtx);8460 rc |= hmR0VmxSaveGuestRflags(pVCpu, pMixedCtx);8461 8484 AssertRCReturn(rc, rc); 8462 8485 … … 8514 8537 8515 8538 /* We require CR0 and EFER. EFER is always up-to-date. */ 8516 int rc = hmR0VmxSaveGuestC ontrolRegs(pVCpu, pMixedCtx);8539 int rc = hmR0VmxSaveGuestCR0(pVCpu, pMixedCtx); 8517 8540 AssertRCReturn(rc, rc); 8518 8541
Note:
See TracChangeset
for help on using the changeset viewer.