Changeset 7642 in vbox
- Timestamp:
- Mar 31, 2008 10:06:59 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 29149
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMInternal.h
r7635 r7642 816 816 * @param pPage Pointer to the physical guest page tracking structure. 817 817 */ 818 #define PGM_PAGE_HA VE_ANY_PHYSICAL_HANDLERS(pPage) ( (pPage)->u2HandlerPhysStateX != PGM_PAGE_HNDL_PHYS_STATE_NONE )818 #define PGM_PAGE_HAS_ANY_PHYSICAL_HANDLERS(pPage) ( (pPage)->u2HandlerPhysStateX != PGM_PAGE_HNDL_PHYS_STATE_NONE ) 819 819 820 820 /** … … 823 823 * @param pPage Pointer to the physical guest page tracking structure. 824 824 */ 825 #define PGM_PAGE_HA VE_ACTIVE_PHYSICAL_HANDLERS(pPage) ( (pPage)->u2HandlerPhysStateX >= PGM_PAGE_HNDL_PHYS_STATE_WRITE )825 #define PGM_PAGE_HAS_ACTIVE_PHYSICAL_HANDLERS(pPage) ( (pPage)->u2HandlerPhysStateX >= PGM_PAGE_HNDL_PHYS_STATE_WRITE ) 826 826 827 827 … … 860 860 * @param pPage Pointer to the physical guest page tracking structure. 861 861 */ 862 #define PGM_PAGE_HA VE_ANY_VIRTUAL_HANDLERS(pPage) ( (pPage)->u2HandlerVirtStateX != PGM_PAGE_HNDL_VIRT_STATE_NONE )863 864 /** 865 * Same as PGM_PAGE_HA VE_ANY_VIRTUAL_HANDLERS - can't disable pages in862 #define PGM_PAGE_HAS_ANY_VIRTUAL_HANDLERS(pPage) ( (pPage)->u2HandlerVirtStateX != PGM_PAGE_HNDL_VIRT_STATE_NONE ) 863 864 /** 865 * Same as PGM_PAGE_HAS_ANY_VIRTUAL_HANDLERS - can't disable pages in 866 866 * virtual handlers. 867 867 * @returns true/false 868 868 * @param pPage Pointer to the physical guest page tracking structure. 869 869 */ 870 #define PGM_PAGE_HA VE_ACTIVE_VIRTUAL_HANDLERS(pPage) PGM_PAGE_HAVE_ANY_VIRTUAL_HANDLERS(pPage)870 #define PGM_PAGE_HAS_ACTIVE_VIRTUAL_HANDLERS(pPage) PGM_PAGE_HAS_ANY_VIRTUAL_HANDLERS(pPage) 871 871 872 872 … … 877 877 * @param pPage Pointer to the physical guest page tracking structure. 878 878 */ 879 #define PGM_PAGE_HA VE_ANY_HANDLERS(pPage) \879 #define PGM_PAGE_HAS_ANY_HANDLERS(pPage) \ 880 880 ( (pPage)->u2HandlerPhysStateX != PGM_PAGE_HNDL_PHYS_STATE_NONE \ 881 881 || (pPage)->u2HandlerVirtStateX != PGM_PAGE_HNDL_VIRT_STATE_NONE ) … … 886 886 * @param pPage Pointer to the physical guest page tracking structure. 887 887 */ 888 #define PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage) \888 #define PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) \ 889 889 ( (pPage)->u2HandlerPhysStateX >= PGM_PAGE_HNDL_PHYS_STATE_WRITE \ 890 890 || (pPage)->u2HandlerVirtStateX >= PGM_PAGE_HNDL_VIRT_STATE_WRITE ) … … 895 895 * @param pPage Pointer to the physical guest page tracking structure. 896 896 */ 897 #define PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPage) \897 #define PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage) \ 898 898 ( (pPage)->u2HandlerPhysStateX == PGM_PAGE_HNDL_PHYS_STATE_ALL \ 899 899 || (pPage)->u2HandlerVirtStateX == PGM_PAGE_HNDL_VIRT_STATE_ALL ) -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r7629 r7642 277 277 if (VBOX_SUCCESS(rc)) 278 278 { 279 if (PGM_PAGE_HA VE_ANY_HANDLERS(pPage))280 { 281 if (PGM_PAGE_HA VE_ANY_PHYSICAL_HANDLERS(pPage))279 if (PGM_PAGE_HAS_ANY_HANDLERS(pPage)) 280 { 281 if (PGM_PAGE_HAS_ANY_PHYSICAL_HANDLERS(pPage)) 282 282 { 283 283 /* … … 436 436 STAM_COUNTER_INC(&pVM->pgm.s.StatHandlersUnhandled); 437 437 438 if ( !PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPage)438 if ( !PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage) 439 439 && !(uErr & X86_TRAP_PF_P)) 440 440 { … … 458 458 LogFlow(("PGM: PGMInterpretInstruction -> rc=%d HCPhys=%RHp%s%s\n", 459 459 rc, pPage->HCPhys, 460 PGM_PAGE_HA VE_ANY_PHYSICAL_HANDLERS(pPage) ? " phys" : "",461 PGM_PAGE_HA VE_ANY_VIRTUAL_HANDLERS(pPage) ? " virt" : ""));460 PGM_PAGE_HAS_ANY_PHYSICAL_HANDLERS(pPage) ? " phys" : "", 461 PGM_PAGE_HAS_ANY_VIRTUAL_HANDLERS(pPage) ? " virt" : "")); 462 462 STAM_PROFILE_STOP(&pVM->pgm.s.StatHandlers, b); 463 463 STAM_STATS({ pVM->pgm.s.CTXSUFF(pStatTrap0eAttribution) = &pVM->pgm.s.StatTrap0eHndUnhandled; }); … … 786 786 # else /* PAE */ 787 787 unsigned iPDSrc; 788 PX86PDPAE pPDSrc = pgmGstGetPaePDPtr(&pVM->pgm.s, GCPtrPage, &iPDSrc); 789 790 GSTPDE PdeSrc;; 791 PdeSrc.u = pgmGstGetPaePDE(&pVM->pgm.s, GCPtrPage); 788 PX86PDPAE pPDSrc = pgmGstGetPaePDPtr(&pVM->pgm.s, GCPtrPage, &iPDSrc); 789 GSTPDE PdeSrc = pPDSrc->a[iPDSrc]; 792 790 # endif 793 791 … … 864 862 */ 865 863 PPGMPOOLPAGE pShwPage = pgmPoolGetPageByHCPhys(pVM, PdeDst.u & SHW_PDE_PG_MASK); 866 RTGCPHYS GCPhys = PdeSrc.u & GST_PDE_PG_MASK;864 RTGCPHYS GCPhys = PdeSrc.u & GST_PDE_PG_MASK; 867 865 # if PGM_SHW_TYPE != PGM_TYPE_32BIT 868 866 GCPhys |= (iPDDst & 1) * (PAGE_SIZE/2); … … 909 907 /* Before freeing the page, check if anything really changed. */ 910 908 PPGMPOOLPAGE pShwPage = pgmPoolGetPageByHCPhys(pVM, PdeDst.u & SHW_PDE_PG_MASK); 911 RTGCPHYS GCPhys = PdeSrc.u & GST_PDE4M_PG_MASK;909 RTGCPHYS GCPhys = PdeSrc.u & GST_PDE4M_PG_MASK; 912 910 # if PGM_SHW_TYPE != PGM_TYPE_32BIT 913 911 GCPhys |= GCPtrPage & (1 << X86_PD_PAE_SHIFT); … … 1115 1113 const RTHCPHYS HCPhys = pPage->HCPhys; /** @todo FLAGS */ 1116 1114 SHWPTE PteDst; 1117 if (PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage))1115 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 1118 1116 { 1119 1117 /** @todo r=bird: Are we actually handling dirty and access bits for pages with access handlers correctly? No. */ 1120 if (!PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPage))1118 if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) 1121 1119 PteDst.u = (PteSrc.u & ~(X86_PTE_PAE_PG_MASK | X86_PTE_AVL_MASK | X86_PTE_PAT | X86_PTE_PCD | X86_PTE_PWT | X86_PTE_RW)) 1122 1120 | (HCPhys & X86_PTE_PAE_PG_MASK); … … 1350 1348 || !CSAMDoesPageNeedScanning(pVM, (RTGCPTR)GCPtrCurPage) 1351 1349 || ( (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK)) 1352 && PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage))1350 && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 1353 1351 ) 1354 1352 #endif /* else: CSAM not active */ … … 1405 1403 PteDst.u = (PdeSrc.u & ~(X86_PTE_PAE_PG_MASK | X86_PTE_AVL_MASK | X86_PTE_PAT | X86_PTE_PCD | X86_PTE_PWT)) 1406 1404 | (HCPhys & X86_PTE_PAE_PG_MASK); 1407 if (PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage))1408 { 1409 if (!PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPage))1405 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 1406 { 1407 if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) 1410 1408 PteDst.n.u1Write = 0; 1411 1409 else … … 1767 1765 PPGMPAGE pPage = pgmPhysGetPage(&pVM->pgm.s, pPteSrc->u & GST_PTE_PG_MASK); 1768 1766 if (pPage) 1769 AssertMsg(!PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage),1767 AssertMsg(!PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage), 1770 1768 ("Unexpected dirty bit tracking on monitored page %VGv (phys %VGp)!!!!!!\n", GCPtrPage, pPteSrc->u & X86_PTE_PAE_PG_MASK)); 1771 1769 # endif … … 2025 2023 || !CSAMDoesPageNeedScanning(pVM, (RTGCPTR)((iPDSrc << GST_PD_SHIFT) | (iPTSrc << PAGE_SHIFT))) 2026 2024 || ( (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK)) 2027 && PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage))2025 && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 2028 2026 ) 2029 2027 #endif … … 2124 2122 } 2125 2123 2126 if (PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPage))2124 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 2127 2125 { 2128 if (!PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPage))2126 if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) 2129 2127 { 2130 2128 PteDst.u = PGM_PAGE_GET_HCPHYS(pPage) | PteDstBase.u; … … 3154 3152 3155 3153 /* flags */ 3156 if (PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPhysPage))3157 { 3158 if (!PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPhysPage))3154 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPhysPage)) 3155 { 3156 if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPhysPage)) 3159 3157 { 3160 3158 if (PteDst.n.u1Write) … … 3383 3381 3384 3382 /* flags */ 3385 if (PGM_PAGE_HA VE_ACTIVE_HANDLERS(pPhysPage))3386 { 3387 if (!PGM_PAGE_HA VE_ACTIVE_ALL_HANDLERS(pPhysPage))3383 if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPhysPage)) 3384 { 3385 if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPhysPage)) 3388 3386 { 3389 3387 if (PGM_PAGE_GET_HNDL_PHYS_STATE(pPhysPage) != PGM_PAGE_HNDL_PHYS_STATE_DISABLED) -
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r6927 r7642 1370 1370 { 1371 1371 PGMPAGE const *pPage = &pRam->aPages[iPage]; 1372 if (PGM_PAGE_HA VE_ANY_HANDLERS(pPage))1372 if (PGM_PAGE_HAS_ANY_HANDLERS(pPage)) 1373 1373 { 1374 1374 State.GCPhys = pRam->GCPhys + (iPage << PAGE_SHIFT); … … 1378 1378 * active on the page, then compare. 1379 1379 */ 1380 if (PGM_PAGE_HA VE_ANY_PHYSICAL_HANDLERS(pPage))1380 if (PGM_PAGE_HAS_ANY_PHYSICAL_HANDLERS(pPage)) 1381 1381 { 1382 1382 /* the first */ … … 1438 1438 * Virtual handlers. 1439 1439 */ 1440 if (PGM_PAGE_HA VE_ACTIVE_VIRTUAL_HANDLERS(pPage))1440 if (PGM_PAGE_HAS_ACTIVE_VIRTUAL_HANDLERS(pPage)) 1441 1441 { 1442 1442 State.uVirtState = PGM_PAGE_GET_HNDL_VIRT_STATE(pPage); -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r7635 r7642 1433 1433 * Virtual handlers 1434 1434 */ 1435 if ( PGM_PAGE_HA VE_ACTIVE_VIRTUAL_HANDLERS(pPage)1435 if ( PGM_PAGE_HAS_ACTIVE_VIRTUAL_HANDLERS(pPage) 1436 1436 && !(pPage->HCPhys & MM_RAM_FLAGS_MMIO)) /// @todo PAGE FLAGS 1437 1437 { 1438 if (PGM_PAGE_HA VE_ACTIVE_PHYSICAL_HANDLERS(pPage))1438 if (PGM_PAGE_HAS_ACTIVE_PHYSICAL_HANDLERS(pPage)) 1439 1439 { 1440 1440 /*
Note:
See TracChangeset
for help on using the changeset viewer.