- Timestamp:
- Oct 7, 2008 1:17:17 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 37501
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMHandler.cpp
r13045 r13046 340 340 pNew->pfnHandlerR3 = pfnHandlerR3; 341 341 pNew->pszDesc = pszDesc; 342 pNew->GCPtr = GCPtr;343 pNew->GCPtrLast = GCPtrLast;344 342 pNew->cb = GCPtrLast - GCPtr + 1; 345 343 pNew->cPages = cPages; … … 367 365 PPGMVIRTHANDLER pCur = (PPGMVIRTHANDLER)RTAvlroGCPtrGetBestFit(pRoot, pNew->Core.Key, true); 368 366 if ( !pCur 369 || GCPtr > pCur-> GCPtrLast370 || GCPtrLast < pCur-> GCPtr)367 || GCPtr > pCur->Core.KeyLast 368 || GCPtrLast < pCur->Core.Key) 371 369 pCur = (PPGMVIRTHANDLER)RTAvlroGCPtrGetBestFit(pRoot, pNew->Core.Key, false); 372 370 if ( pCur 373 && GCPtr <= pCur-> GCPtrLast374 && GCPtrLast >= pCur-> GCPtr)371 && GCPtr <= pCur->Core.KeyLast 372 && GCPtrLast >= pCur->Core.Key) 375 373 { 376 374 /* … … 379 377 */ 380 378 Log(("PGMR3HandlerVirtualRegister: Conflict with existing range %RGv-%RGv (%s), req. %RGv-%RGv (%s)\n", 381 pCur-> GCPtr, pCur->GCPtrLast, pCur->pszDesc, GCPtr, GCPtrLast, pszDesc));379 pCur->Core.Key, pCur->Core.KeyLast, pCur->pszDesc, GCPtr, GCPtrLast, pszDesc)); 382 380 MMHyperFree(pVM, pNew); 383 381 pgmUnlock(pVM); … … 397 395 #ifdef VBOX_WITH_STATISTICS 398 396 char szPath[256]; 399 RTStrPrintf(szPath, sizeof(szPath), "/PGM/VirtHandler/Calls/%VGv-%VGv", pNew-> GCPtr, pNew->GCPtrLast);397 RTStrPrintf(szPath, sizeof(szPath), "/PGM/VirtHandler/Calls/%VGv-%VGv", pNew->Core.Key, pNew->Core.KeyLast); 400 398 rc = STAMR3Register(pVM, &pNew->Stat, STAMTYPE_PROFILE, STAMVISIBILITY_USED, szPath, STAMUNIT_TICKS_PER_CALL, pszDesc); 401 399 AssertRC(rc); … … 456 454 if (RT_LIKELY(pCur)) 457 455 { 458 Log(("PGMHandlerVirtualDeregister: Removing Virtual (%d) Range % VGv-%VGv %s\n", pCur->enmType,459 pCur-> GCPtr, pCur->GCPtrLast, pCur->pszDesc));456 Log(("PGMHandlerVirtualDeregister: Removing Virtual (%d) Range %RGv-%RGv %s\n", pCur->enmType, 457 pCur->Core.Key, pCur->Core.KeyLast, pCur->pszDesc)); 460 458 Assert(pCur->enmType != PGMVIRTHANDLERTYPE_HYPERVISOR); 461 459 … … 485 483 } 486 484 487 Log(("PGMHandlerVirtualDeregister: Removing Hyper Virtual (%d) Range % VGv-%VGv %s\n", pCur->enmType,488 pCur-> GCPtr, pCur->GCPtrLast, pCur->pszDesc));485 Log(("PGMHandlerVirtualDeregister: Removing Hyper Virtual (%d) Range %RGv-%RGv %s\n", pCur->enmType, 486 pCur->Core.Key, pCur->Core.KeyLast, pCur->pszDesc)); 489 487 Assert(pCur->enmType == PGMVIRTHANDLERTYPE_HYPERVISOR); 490 488 } … … 619 617 } 620 618 pHlp->pfnPrintf(pHlp, "%RGv - %RGv %RHv %RRv %s %s\n", 621 pCur-> GCPtr, pCur->GCPtrLast, pCur->pfnHandlerR3, pCur->pfnHandlerRC, pszType, pCur->pszDesc);619 pCur->Core.Key, pCur->Core.KeyLast, pCur->pfnHandlerR3, pCur->pfnHandlerRC, pszType, pCur->pszDesc); 622 620 #ifdef VBOX_WITH_STATISTICS 623 621 if (pArgs->fStats) -
trunk/src/VBox/VMM/PGMInternal.h
r13045 r13046 452 452 /** Number of cache pages. */ 453 453 uint32_t cPages; 454 455 /** @todo The next two members are redundant. It adds some readability though. */456 /** Start of the range. */457 RTGCPTR GCPtr;458 /** End of the range (exclusive). */459 RTGCPTR GCPtrLast;460 454 461 455 /** Size of the range (in bytes). */ -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r13045 r13046 275 275 PPGMVIRTHANDLER pCur = (PPGMVIRTHANDLER)RTAvlroGCPtrRangeGet(&CTXSUFF(pVM->pgm.s.pTrees)->HyperVirtHandlers, pvFault); 276 276 if ( pCur 277 && (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur-> GCPtr< pCur->cb277 && (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key < pCur->cb 278 278 && uErr & X86_TRAP_PF_RW) 279 279 { 280 280 # ifdef IN_GC 281 281 STAM_PROFILE_START(&pCur->Stat, h); 282 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur-> GCPtr, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->GCPtr);282 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key); 283 283 STAM_PROFILE_STOP(&pCur->Stat, h); 284 284 # else … … 448 448 if (pCur) 449 449 { 450 AssertMsg(!((RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur-> GCPtr< pCur->cb)450 AssertMsg(!((RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key < pCur->cb) 451 451 || ( pCur->enmType != PGMVIRTHANDLERTYPE_WRITE 452 452 || !(uErr & X86_TRAP_PF_P) … … 454 454 ("Unexpected trap for virtual handler: %VGv (phys=%VGp) HCPhys=%HGp uErr=%X, enum=%d\n", pvFault, GCPhys, pPage->HCPhys, uErr, pCur->enmType)); 455 455 456 if ( (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur-> GCPtr< pCur->cb456 if ( (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key < pCur->cb 457 457 && ( uErr & X86_TRAP_PF_RW 458 458 || pCur->enmType != PGMVIRTHANDLERTYPE_WRITE ) ) … … 460 460 # ifdef IN_GC 461 461 STAM_PROFILE_START(&pCur->Stat, h); 462 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur-> GCPtr, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->GCPtr);462 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key); 463 463 STAM_PROFILE_STOP(&pCur->Stat, h); 464 464 # else … … 486 486 Assert((pCur->aPhysToVirt[iPage].Core.Key & X86_PTE_PAE_PG_MASK) == GCPhys); 487 487 # ifdef IN_GC 488 RTGCUINTPTR off = (iPage << PAGE_SHIFT) + ((RTGCUINTPTR)pvFault & PAGE_OFFSET_MASK) - ((RTGCUINTPTR)pCur-> GCPtr& PAGE_OFFSET_MASK);488 RTGCUINTPTR off = (iPage << PAGE_SHIFT) + ((RTGCUINTPTR)pvFault & PAGE_OFFSET_MASK) - ((RTGCUINTPTR)pCur->Core.Key & PAGE_OFFSET_MASK); 489 489 Assert(off < pCur->cb); 490 490 STAM_PROFILE_START(&pCur->Stat, h); 491 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur-> GCPtr, off);491 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, off); 492 492 STAM_PROFILE_STOP(&pCur->Stat, h); 493 493 # else … … 555 555 if (pCur) 556 556 { 557 AssertMsg( !((RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur-> GCPtr< pCur->cb)557 AssertMsg( !((RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key < pCur->cb) 558 558 || ( pCur->enmType != PGMVIRTHANDLERTYPE_WRITE 559 559 || !(uErr & X86_TRAP_PF_P) … … 561 561 ("Unexpected trap for virtual handler: %08X (phys=%08x) HCPhys=%X uErr=%X, enum=%d\n", pvFault, GCPhys, pPage->HCPhys, uErr, pCur->enmType)); 562 562 563 if ( (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur-> GCPtr< pCur->cb563 if ( (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key < pCur->cb 564 564 && ( uErr & X86_TRAP_PF_RW 565 565 || pCur->enmType != PGMVIRTHANDLERTYPE_WRITE ) ) … … 567 567 # ifdef IN_GC 568 568 STAM_PROFILE_START(&pCur->Stat, h); 569 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur-> GCPtr, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->GCPtr);569 rc = pCur->CTX_SUFF(pfnHandler)(pVM, uErr, pRegFrame, pvFault, pCur->Core.Key, (RTGCUINTPTR)pvFault - (RTGCUINTPTR)pCur->Core.Key); 570 570 STAM_PROFILE_STOP(&pCur->Stat, h); 571 571 # else -
trunk/src/VBox/VMM/VMMAll/PGMAllGst.h
r13038 r13046 776 776 #endif 777 777 778 RTGCUINTPTR GCPtr = (RTUINTPTR)pCur-> GCPtr;778 RTGCUINTPTR GCPtr = (RTUINTPTR)pCur->Core.Key; 779 779 #if PGM_GST_MODE != PGM_MODE_AMD64 780 780 /* skip all stuff above 4GB if not AMD64 mode. */ -
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r13042 r13046 1011 1011 *piPage = pCur - &(*ppVirt)->aPhysToVirt[0]; 1012 1012 1013 LogFlow(("PHYS2VIRT: found match for % VGp -> %VGv *piPage=%#x\n", GCPhys, (*ppVirt)->GCPtr, *piPage));1013 LogFlow(("PHYS2VIRT: found match for %RGp -> %RGv *piPage=%#x\n", GCPhys, (*ppVirt)->Core.Key, *piPage)); 1014 1014 STAM_PROFILE_STOP(CTXSUFF(&pVM->pgm.s.StatVirtHandleSearchByPhys), a); 1015 1015 return VINF_SUCCESS; … … 1091 1091 unsigned uState = pgmHandlerVirtualCalcState(pCur); 1092 1092 PPGMRAMRANGE pRamHint = NULL; 1093 RTGCUINTPTR offPage = ((RTGCUINTPTR)pCur-> GCPtr& PAGE_OFFSET_MASK);1093 RTGCUINTPTR offPage = ((RTGCUINTPTR)pCur->Core.Key & PAGE_OFFSET_MASK); 1094 1094 RTGCUINTPTR cbLeft = pCur->cb; 1095 1095 for (unsigned iPage = 0; iPage < pCur->cPages; iPage++) … … 1261 1261 * Check key alignment. 1262 1262 */ 1263 if ( (pVirt->aPhysToVirt[0].Core.Key & PAGE_OFFSET_MASK) != ((RTGCUINTPTR)pVirt-> GCPtr& PAGE_OFFSET_MASK)1263 if ( (pVirt->aPhysToVirt[0].Core.Key & PAGE_OFFSET_MASK) != ((RTGCUINTPTR)pVirt->Core.Key & PAGE_OFFSET_MASK) 1264 1264 && pVirt->aPhysToVirt[0].Core.Key != NIL_RTGCPHYS) 1265 1265 { 1266 AssertMsgFailed(("virt handler phys has incorrect key! % VGp %VGv %s\n",1267 pVirt->aPhysToVirt[0].Core.Key, pVirt-> GCPtr, R3STRING(pVirt->pszDesc)));1266 AssertMsgFailed(("virt handler phys has incorrect key! %RGp %RGv %s\n", 1267 pVirt->aPhysToVirt[0].Core.Key, pVirt->Core.Key, R3STRING(pVirt->pszDesc))); 1268 1268 pState->cErrors++; 1269 1269 } 1270 1270 1271 if ( (pVirt->aPhysToVirt[pVirt->cPages - 1].Core.KeyLast & PAGE_OFFSET_MASK) != ((RTGCUINTPTR)pVirt-> GCPtrLast & PAGE_OFFSET_MASK)1271 if ( (pVirt->aPhysToVirt[pVirt->cPages - 1].Core.KeyLast & PAGE_OFFSET_MASK) != ((RTGCUINTPTR)pVirt->Core.KeyLast & PAGE_OFFSET_MASK) 1272 1272 && pVirt->aPhysToVirt[pVirt->cPages - 1].Core.Key != NIL_RTGCPHYS) 1273 1273 { 1274 AssertMsgFailed(("virt handler phys has incorrect key! % VGp %VGv %s\n",1275 pVirt->aPhysToVirt[pVirt->cPages - 1].Core.KeyLast, pVirt-> GCPtrLast, R3STRING(pVirt->pszDesc)));1274 AssertMsgFailed(("virt handler phys has incorrect key! %RGp %RGv %s\n", 1275 pVirt->aPhysToVirt[pVirt->cPages - 1].Core.KeyLast, pVirt->Core.KeyLast, R3STRING(pVirt->pszDesc))); 1276 1276 pState->cErrors++; 1277 1277 } … … 1280 1280 * Check pages for sanity and state. 1281 1281 */ 1282 RTGCUINTPTR GCPtr = (RTGCUINTPTR)pVirt-> GCPtr;1282 RTGCUINTPTR GCPtr = (RTGCUINTPTR)pVirt->Core.Key; 1283 1283 for (unsigned iPage = 0; iPage < pVirt->cPages; iPage++, GCPtr += PAGE_SIZE) 1284 1284 { -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r13045 r13046 1257 1257 if (cb > cbRead) 1258 1258 cb = cbRead; 1259 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pNode-> GCPtr& PAGE_BASE_GC_MASK)1259 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pNode->Core.Key & PAGE_BASE_GC_MASK) 1260 1260 + (iPage << PAGE_SHIFT) + (off & PAGE_OFFSET_MASK); 1261 1261 … … 1506 1506 if (cb > cbWrite) 1507 1507 cb = cbWrite; 1508 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pVirtNode-> GCPtr& PAGE_BASE_GC_MASK)1508 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pVirtNode->Core.Key & PAGE_BASE_GC_MASK) 1509 1509 + (iPage << PAGE_SHIFT) + (off & PAGE_OFFSET_MASK); 1510 1510 … … 1556 1556 if (cb > cbWrite) 1557 1557 cb = cbWrite; 1558 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pNode-> GCPtr& PAGE_BASE_GC_MASK)1558 RTGCUINTPTR GCPtr = ((RTGCUINTPTR)pNode->Core.Key & PAGE_BASE_GC_MASK) 1559 1559 + (iPage << PAGE_SHIFT) + (off & PAGE_OFFSET_MASK); 1560 1560 -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r13045 r13046 555 555 GEN_CHECK_OFF(PGMVIRTHANDLER, Core); 556 556 GEN_CHECK_OFF(PGMVIRTHANDLER, enmType); 557 GEN_CHECK_OFF(PGMVIRTHANDLER, GCPtr);558 GEN_CHECK_OFF(PGMVIRTHANDLER, GCPtrLast);559 557 GEN_CHECK_OFF(PGMVIRTHANDLER, cb); 560 558 GEN_CHECK_OFF(PGMVIRTHANDLER, pfnHandlerR3);
Note:
See TracChangeset
for help on using the changeset viewer.