Changeset 36196 in vbox
- Timestamp:
- Mar 7, 2011 5:50:27 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pgm.h
r35361 r36196 330 330 VMMDECL(int) PGMGstSetPage(PVMCPU pVCpu, RTGCPTR GCPtr, size_t cb, uint64_t fFlags); 331 331 VMMDECL(int) PGMGstModifyPage(PVMCPU pVCpu, RTGCPTR GCPtr, size_t cb, uint64_t fFlags, uint64_t fMask); 332 VMMDECL( X86PDPE) PGMGstGetPaePDPtr(PVMCPU pVCpu, unsigned iPdPt);332 VMMDECL(int) PGMGstQueryPaePDPtr(PVMCPU pVCpu, unsigned iPdpt, PX86PDPE pPdpe); 333 333 334 334 VMMDECL(int) PGMInvalidatePage(PVMCPU pVCpu, RTGCPTR GCPtrPage); -
trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
r36009 r36196 1627 1627 * @param iPdpt PDPT index 1628 1628 */ 1629 VMMDECL( X86PDPE) PGMGstGetPaePDPtr(PVMCPU pVCpu, unsigned iPdpt)1629 VMMDECL(int) PGMGstQueryPaePDPtr(PVMCPU pVCpu, unsigned iPdpt, PX86PDPE pPdpe) 1630 1630 { 1631 1631 Assert(iPdpt <= 3); 1632 return pgmGstGetPaePDPTPtr(pVCpu)->a[iPdpt & 3]; 1632 PX86PDPT pPdpt; 1633 int rc = pgmGstGetPaePDPTPtrEx(pVCpu, &pPdpt); 1634 if (RT_SUCCESS(rc)) 1635 *pPdpe = pPdpt->a[iPdpt & 3]; 1636 return rc; 1633 1637 } 1634 1638 -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r35346 r36196 1237 1237 * Prefetch the 4 PDPT pointers (PAE and nested paging only) 1238 1238 * 1239 * @returns VINF_SUCCESS or fatal error. 1239 1240 * @param pVM The VM to operate on. 1240 1241 * @param pVCpu The VMCPU to operate on. 1241 1242 * @param pCtx Guest context 1242 1243 */ 1243 static voidvmxR0PrefetchPAEPdptrs(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx)1244 static int vmxR0PrefetchPAEPdptrs(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx) 1244 1245 { 1245 1246 if (CPUMIsGuestInPAEModeEx(pCtx)) 1246 1247 { 1247 X86PDPE Pdpe;1248 1249 1248 for (unsigned i=0;i<4;i++) 1250 1249 { 1251 Pdpe = PGMGstGetPaePDPtr(pVCpu, i); 1252 int rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR0_FULL + i*2, Pdpe.u); 1250 X86PDPE Pdpe; 1251 int rc = PGMGstQueryPaePDPtr(pVCpu, i, &Pdpe); 1252 AssertRCReturn(rc, rc); 1253 1254 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR0_FULL + i*2, Pdpe.u); 1253 1255 AssertRC(rc); 1254 1256 } 1255 1257 } 1258 return VINF_SUCCESS; 1256 1259 } 1257 1260 … … 1747 1750 val = pCtx->cr3; 1748 1751 /* Prefetch the four PDPT entries in PAE mode. */ 1749 vmxR0PrefetchPAEPdptrs(pVM, pVCpu, pCtx); 1752 rc = vmxR0PrefetchPAEPdptrs(pVM, pVCpu, pCtx); 1753 AssertRCReturn(rc, rc); 1750 1754 } 1751 1755 } … … 2021 2025 } 2022 2026 /* Prefetch the four PDPT entries in PAE mode. */ 2023 vmxR0PrefetchPAEPdptrs(pVM, pVCpu, pCtx); 2027 rc = vmxR0PrefetchPAEPdptrs(pVM, pVCpu, pCtx); 2028 AssertRCReturn(rc, rc); 2024 2029 } 2025 2030
Note:
See TracChangeset
for help on using the changeset viewer.