Changeset 19808 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 19, 2009 9:23:34 AM (16 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMInternal.h
r19780 r19808 332 332 */ 333 333 #ifdef IN_RC 334 # define PGM_INVL_PG( GCVirt)ASMInvalidatePage((void *)(GCVirt))334 # define PGM_INVL_PG(pVCpu, GCVirt) ASMInvalidatePage((void *)(GCVirt)) 335 335 #elif defined(IN_RING0) 336 # define PGM_INVL_PG( GCVirt) HWACCMInvalidatePage(pVM, (RTGCPTR)(GCVirt))336 # define PGM_INVL_PG(pVCpu, GCVirt) HWACCMInvalidatePage(pVCpu, (RTGCPTR)(GCVirt)) 337 337 #else 338 # define PGM_INVL_PG( GCVirt) HWACCMInvalidatePage(pVM, (RTGCPTR)(GCVirt))338 # define PGM_INVL_PG(pVCpu, GCVirt) HWACCMInvalidatePage(pVCpu, (RTGCPTR)(GCVirt)) 339 339 #endif 340 340 … … 345 345 */ 346 346 #ifdef IN_RC 347 # define PGM_INVL_BIG_PG( GCVirt)ASMReloadCR3()347 # define PGM_INVL_BIG_PG(pVCpu, GCVirt) ASMReloadCR3() 348 348 #elif defined(IN_RING0) 349 # define PGM_INVL_BIG_PG( GCVirt) HWACCMFlushTLB(pVM)349 # define PGM_INVL_BIG_PG(pVCpu, GCVirt) HWACCMFlushTLB(pVCpu) 350 350 #else 351 # define PGM_INVL_BIG_PG( GCVirt) HWACCMFlushTLB(pVM)351 # define PGM_INVL_BIG_PG(pVCpu, GCVirt) HWACCMFlushTLB(pVCpu) 352 352 #endif 353 353 … … 356 356 */ 357 357 #ifdef IN_RC 358 # define PGM_INVL_GUEST_TLBS( )ASMReloadCR3()358 # define PGM_INVL_GUEST_TLBS(pVCpu) ASMReloadCR3() 359 359 #elif defined(IN_RING0) 360 # define PGM_INVL_GUEST_TLBS( ) HWACCMFlushTLB(pVM)360 # define PGM_INVL_GUEST_TLBS(pVCpu) HWACCMFlushTLB(pVCpu) 361 361 #else 362 # define PGM_INVL_GUEST_TLBS( ) HWACCMFlushTLB(pVM)362 # define PGM_INVL_GUEST_TLBS(pVCpu) HWACCMFlushTLB(pVCpu) 363 363 #endif 364 364 -
trunk/src/VBox/VMM/PGMPhys.cpp
r19807 r19808 2620 2620 * Process the request. 2621 2621 */ 2622 pgmLock(pVM); 2622 2623 int rc = VINF_SUCCESS; 2623 2624 bool fFlushTLB = false; 2624 2625 for (PPGMROMRANGE pRom = pVM->pgm.s.pRomRangesR3; pRom; pRom = pRom->pNextR3) 2626 { 2625 2627 if ( GCPhys <= pRom->GCPhysLast 2626 2628 && GCPhysLast >= pRom->GCPhys … … 2666 2668 { 2667 2669 int rc = PGMHandlerPhysicalReset(pVM, pRom->GCPhys); 2668 AssertRCReturn(rc, rc); 2670 if (RT_FAILURE(rc)) 2671 { 2672 pgmUnlock(pVM); 2673 AssertRC(rc); 2674 return rc; 2675 } 2669 2676 } 2670 2677 … … 2672 2679 GCPhys = pRom->GCPhys + (cPages << PAGE_SHIFT); 2673 2680 } 2674 2681 } 2682 pgmUnlock(pVM); 2675 2683 if (fFlushTLB) 2676 PGM_INVL_GUEST_TLBS(); 2684 PGM_INVL_GUEST_TLBS(VMMGetCpu(pVM)); 2685 2677 2686 return rc; 2678 2687 } -
trunk/src/VBox/VMM/VMMAll/EMAll.cpp
r19725 r19808 3011 3011 /* AMD64 Architecture Programmer's Manual: 15.15 TLB Control; flush the TLB if MSR_K6_EFER_NXE, MSR_K6_EFER_LME or MSR_K6_EFER_LMA are changed. */ 3012 3012 if ((oldval & (MSR_K6_EFER_NXE|MSR_K6_EFER_LME|MSR_K6_EFER_LMA)) != (pCtx->msrEFER & (MSR_K6_EFER_NXE|MSR_K6_EFER_LME|MSR_K6_EFER_LMA))) 3013 HWACCMFlushTLB(pV M);3013 HWACCMFlushTLB(pVCpu); 3014 3014 3015 3015 break; -
trunk/src/VBox/VMM/VMMAll/HWACCMAll.cpp
r19227 r19808 48 48 * 49 49 * @returns VBox status code. 50 * @param pV M The VMto operate on.50 * @param pVCpu The VMCPU to operate on. 51 51 * @param GCVirt Page to invalidate 52 52 */ 53 VMMDECL(int) HWACCMInvalidatePage(PVM pVM, RTGCPTR GCVirt)53 VMMDECL(int) HWACCMInvalidatePage(PVMCPU pVCpu, RTGCPTR GCVirt) 54 54 { 55 55 #ifdef IN_RING0 56 PVM CPU pVCpu = VMMGetCpu(pVM);56 PVM pVM = pVCpu->CTX_SUFF(pVM); 57 57 if (pVM->hwaccm.s.vmx.fSupported) 58 58 return VMXR0InvalidatePage(pVM, pVCpu, GCVirt); … … 69 69 * 70 70 * @returns VBox status code. 71 * @param pV M The VMto operate on.71 * @param pVCpu The VMCPU to operate on. 72 72 */ 73 VMMDECL(int) HWACCMFlushTLB(PVM pVM)73 VMMDECL(int) HWACCMFlushTLB(PVMCPU pVCpu) 74 74 { 75 PVMCPU pVCpu = VMMGetCpu(pVM);76 77 75 LogFlow(("HWACCMFlushTLB\n")); 78 76 … … 115 113 * 116 114 * @returns VBox status code. 117 * @param pV M The VMto operate on.115 * @param pVCpu The VMCPU to operate on. 118 116 * @param GCPhys Page to invalidate 119 117 */ 120 VMMDECL(int) HWACCMInvalidatePhysPage(PVM pVM, RTGCPHYS GCPhys)118 VMMDECL(int) HWACCMInvalidatePhysPage(PVMCPU pVCpu, RTGCPHYS GCPhys) 121 119 { 120 PVM pVM = pVCpu->CTX_SUFF(pVM); 121 122 122 if (!HWACCMIsNestedPagingActive(pVM)) 123 123 return VINF_SUCCESS; 124 124 125 125 #ifdef IN_RING0 126 PVMCPU pVCpu = VMMGetCpu(pVM);127 126 if (pVM->hwaccm.s.vmx.fSupported) 128 127 return VMXR0InvalidatePhysPage(pVM, pVCpu, GCPhys); … … 131 130 SVMR0InvalidatePhysPage(pVM, pVCpu, GCPhys); 132 131 #else 133 HWACCMFlushTLB(pV M);132 HWACCMFlushTLB(pVCpu); 134 133 #endif 135 134 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
r19790 r19808 1867 1867 */ 1868 1868 if (rc == VINF_SUCCESS) 1869 PGM_INVL_GUEST_TLBS( );1869 PGM_INVL_GUEST_TLBS(pVCpu); 1870 1870 return rc; 1871 1871 } … … 1924 1924 1925 1925 /* Flush the TLB */ 1926 PGM_INVL_GUEST_TLBS( );1926 PGM_INVL_GUEST_TLBS(pVCpu); 1927 1927 1928 1928 #ifdef IN_RING3 -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r19791 r19808 989 989 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePageSkipped)); 990 990 if (!VMCPU_FF_ISSET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)) 991 PGM_INVL_GUEST_TLBS( );991 PGM_INVL_GUEST_TLBS(pVCpu); 992 992 return VINF_SUCCESS; 993 993 } … … 1001 1001 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePageSkipped)); 1002 1002 if (!VMCPU_FF_ISSET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)) 1003 PGM_INVL_GUEST_TLBS( );1003 PGM_INVL_GUEST_TLBS(pVCpu); 1004 1004 return VINF_SUCCESS; 1005 1005 } … … 1092 1092 ASMAtomicWriteSize(pPml4eDst, 0); 1093 1093 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNPs)); 1094 PGM_INVL_GUEST_TLBS( );1094 PGM_INVL_GUEST_TLBS(pVCpu); 1095 1095 return VINF_SUCCESS; 1096 1096 } … … 1106 1106 ASMAtomicWriteSize(pPml4eDst, 0); 1107 1107 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDOutOfSync)); 1108 PGM_INVL_GUEST_TLBS( );1108 PGM_INVL_GUEST_TLBS(pVCpu); 1109 1109 } 1110 1110 else if (!pPml4eSrc->n.u1Accessed) … … 1118 1118 ASMAtomicWriteSize(pPml4eDst, 0); 1119 1119 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNAs)); 1120 PGM_INVL_GUEST_TLBS( );1120 PGM_INVL_GUEST_TLBS(pVCpu); 1121 1121 } 1122 1122 … … 1132 1132 ASMAtomicWriteSize(pPdpeDst, 0); 1133 1133 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNPs)); 1134 PGM_INVL_GUEST_TLBS( );1134 PGM_INVL_GUEST_TLBS(pVCpu); 1135 1135 return VINF_SUCCESS; 1136 1136 } … … 1146 1146 ASMAtomicWriteSize(pPdpeDst, 0); 1147 1147 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDOutOfSync)); 1148 PGM_INVL_GUEST_TLBS( );1148 PGM_INVL_GUEST_TLBS(pVCpu); 1149 1149 } 1150 1150 else if (!PdpeSrc.lm.u1Accessed) … … 1158 1158 ASMAtomicWriteSize(pPdpeDst, 0); 1159 1159 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNAs)); 1160 PGM_INVL_GUEST_TLBS( );1160 PGM_INVL_GUEST_TLBS(pVCpu); 1161 1161 } 1162 1162 # endif /* PGM_GST_TYPE == PGM_TYPE_AMD64 */ … … 1190 1190 ASMAtomicWriteSize(pPdeDst, 0); 1191 1191 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDOutOfSync)); 1192 PGM_INVL_GUEST_TLBS( );1192 PGM_INVL_GUEST_TLBS(pVCpu); 1193 1193 } 1194 1194 else if (!PdeSrc.n.u1Accessed) … … 1202 1202 ASMAtomicWriteSize(pPdeDst, 0); 1203 1203 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNAs)); 1204 PGM_INVL_GUEST_TLBS( );1204 PGM_INVL_GUEST_TLBS(pVCpu); 1205 1205 } 1206 1206 else if (!fIsBigPage) … … 1234 1234 # endif 1235 1235 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePage4KBPages)); 1236 PGM_INVL_PG( GCPtrPage);1236 PGM_INVL_PG(pVCpu, GCPtrPage); 1237 1237 } 1238 1238 else … … 1246 1246 ASMAtomicWriteSize(pPdeDst, 0); 1247 1247 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDOutOfSync)); 1248 PGM_INVL_GUEST_TLBS( );1248 PGM_INVL_GUEST_TLBS(pVCpu); 1249 1249 } 1250 1250 } … … 1292 1292 ASMAtomicWriteSize(pPdeDst, 0); 1293 1293 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePage4MBPages)); 1294 PGM_INVL_BIG_PG( GCPtrPage);1294 PGM_INVL_BIG_PG(pVCpu, GCPtrPage); 1295 1295 } 1296 1296 } … … 1305 1305 ASMAtomicWriteSize(pPdeDst, 0); 1306 1306 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,InvalidatePagePDNPs)); 1307 PGM_INVL_PG( GCPtrPage);1307 PGM_INVL_PG(pVCpu, GCPtrPage); 1308 1308 } 1309 1309 else … … 1920 1920 PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst); 1921 1921 # endif 1922 PGM_INVL_GUEST_TLBS( );1922 PGM_INVL_GUEST_TLBS(pVCpu); 1923 1923 return VINF_PGM_SYNCPAGE_MODIFIED_PDE; 1924 1924 … … 2181 2181 pPdeDst->n.u1Accessed = 1; 2182 2182 pPdeDst->au32[0] &= ~PGM_PDFLAGS_TRACK_DIRTY; 2183 PGM_INVL_BIG_PG( GCPtrPage);2183 PGM_INVL_BIG_PG(pVCpu, GCPtrPage); 2184 2184 STAM_PROFILE_STOP(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyBitTracking), a); 2185 2185 return VINF_PGM_HANDLED_DIRTY_BIT_FAULT; … … 2202 2202 /* Stale TLB entry. */ 2203 2203 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyPageStale)); 2204 PGM_INVL_PG( GCPtrPage);2204 PGM_INVL_PG(pVCpu, GCPtrPage); 2205 2205 2206 2206 STAM_PROFILE_STOP(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyBitTracking), a); … … 2320 2320 pPteDst->n.u1Accessed = 1; 2321 2321 pPteDst->au32[0] &= ~PGM_PTFLAGS_TRACK_DIRTY; 2322 PGM_INVL_PG( GCPtrPage);2322 PGM_INVL_PG(pVCpu, GCPtrPage); 2323 2323 2324 2324 STAM_PROFILE_STOP(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyBitTracking), a); … … 2334 2334 /* Stale TLB entry. */ 2335 2335 STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyPageStale)); 2336 PGM_INVL_PG( GCPtrPage);2336 PGM_INVL_PG(pVCpu, GCPtrPage); 2337 2337 2338 2338 STAM_PROFILE_STOP(&pVCpu->pgm.s.CTX_MID_Z(Stat,DirtyBitTracking), a); … … 3389 3389 */ 3390 3390 /** @todo check if this is really necessary; the call does it as well... */ 3391 HWACCMFlushTLB(pV M);3391 HWACCMFlushTLB(pVCpu); 3392 3392 return VINF_SUCCESS; 3393 3393 … … 4246 4246 { 4247 4247 # ifdef IN_RC 4248 PGM_INVL_PG(pV M->pgm.s.GCPtrCR3Mapping);4248 PGM_INVL_PG(pVCpu, pVM->pgm.s.GCPtrCR3Mapping); 4249 4249 # endif 4250 4250 # if PGM_GST_TYPE == PGM_TYPE_32BIT … … 4299 4299 pVCpu->pgm.s.aGCPhysGstPaePDs[i] = GCPhys; 4300 4300 # ifdef IN_RC 4301 PGM_INVL_PG( GCPtr);4301 PGM_INVL_PG(pVCpu, GCPtr); 4302 4302 # endif 4303 4303 continue; … … 4313 4313 pVCpu->pgm.s.aGCPhysGstPaePDs[i] = NIL_RTGCPHYS; 4314 4314 # ifdef IN_RC 4315 PGM_INVL_PG( GCPtr); /** @todo this shouldn't be necessary? */4315 PGM_INVL_PG(pVCpu, GCPtr); /** @todo this shouldn't be necessary? */ 4316 4316 # endif 4317 4317 } -
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r19807 r19808 169 169 pVM->pgm.s.fPhysCacheFlushPending = true; 170 170 pgmUnlock(pVM); 171 HWACCMFlushTLB( pVM);171 HWACCMFlushTLB(VMMGetCpu(pVM)); 172 172 #ifndef IN_RING3 173 173 REMNotifyHandlerPhysicalRegister(pVM, enmType, GCPhys, GCPhysLast - GCPhys + 1, !!pfnHandlerR3); … … 237 237 if (fFlushTLBs && rc == VINF_SUCCESS) 238 238 { 239 PGM_INVL_GUEST_TLBS( );239 PGM_INVL_GUEST_TLBS(VMMGetCpu(pVM)); 240 240 Log(("pgmHandlerPhysicalSetRamFlagsAndFlushShadowPTs: flushing guest TLBs\n")); 241 241 } … … 271 271 pgmHandlerPhysicalDeregisterNotifyREM(pVM, pCur); 272 272 pgmUnlock(pVM); 273 HWACCMFlushTLB( pVM);273 HWACCMFlushTLB(VMMGetCpu(pVM)); 274 274 MMHyperFree(pVM, pCur); 275 275 return VINF_SUCCESS; … … 415 415 # ifdef IN_RC 416 416 if (fFlushTLBs && rc != VINF_PGM_SYNC_CR3) 417 PGM_INVL_GUEST_TLBS( );417 PGM_INVL_GUEST_TLBS(VMMGetCpu0(pVM)); 418 418 # else 419 HWACCMFlushTLB( pVM);419 HWACCMFlushTLB(VMMGetCpu(pVM)); 420 420 # endif 421 421 pVM->pgm.s.fPhysCacheFlushPending = true; … … 553 553 #endif 554 554 pgmUnlock(pVM); 555 HWACCMFlushTLB( pVM);555 HWACCMFlushTLB(VMMGetCpu(pVM)); 556 556 Log(("PGMHandlerPhysicalModify: GCPhysCurrent=%RGp -> GCPhys=%RGp GCPhysLast=%RGp\n", 557 557 GCPhysCurrent, GCPhys, GCPhysLast)); … … 848 848 rc = pgmHandlerPhysicalSetRamFlagsAndFlushShadowPTs(pVM, pCur, pRam); 849 849 pVM->pgm.s.fPhysCacheFlushPending = true; 850 HWACCMFlushTLB( pVM);850 HWACCMFlushTLB(VMMGetCpu(pVM)); 851 851 } 852 852 … … 920 920 PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_DISABLED); 921 921 #ifndef IN_RC 922 HWACCMInvalidatePhysPage( pVM, GCPhysPage);922 HWACCMInvalidatePhysPage(VMMGetCpu(pVM), GCPhysPage); 923 923 #endif 924 924 return VINF_SUCCESS; … … 1037 1037 1038 1038 #ifndef IN_RC 1039 HWACCMInvalidatePhysPage( pVM, GCPhysPage);1039 HWACCMInvalidatePhysPage(VMMGetCpu(pVM), GCPhysPage); 1040 1040 #endif 1041 1041 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp
r19690 r19808 189 189 190 190 /* invalidate tls */ 191 PGM_INVL_PG( (RTGCUINTPTR)pCur->GCPtr + off);191 PGM_INVL_PG(VMMGetCpu(pVM), (RTGCUINTPTR)pCur->GCPtr + off); 192 192 193 193 /* next */ -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r19586 r19808 344 344 int pgmPhysAllocPage(PVM pVM, PPGMPAGE pPage, RTGCPHYS GCPhys) 345 345 { 346 PVMCPU pVCpu = VMMGetCpu(pVM); 346 347 LogFlow(("pgmPhysAllocPage: %R[pgmpage] %RGp\n", pPage, GCPhys)); 347 348 … … 369 370 { 370 371 if (fFlushTLBs) 371 PGM_INVL_GUEST_TLBS( );372 PGM_INVL_GUEST_TLBS(pVCpu); 372 373 Assert(rc2 == VERR_EM_NO_MEMORY); 373 374 return rc2; … … 424 425 if ( fFlushTLBs 425 426 && rc != VINF_PGM_GCPHYS_ALIASED) 426 PGM_INVL_GUEST_TLBS( );427 PGM_INVL_GUEST_TLBS(pVCpu); 427 428 return rc; 428 429 } -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r19795 r19808 938 938 939 939 /* See use in pgmPoolAccessHandlerSimple(). */ 940 PGM_INVL_GUEST_TLBS( );940 PGM_INVL_GUEST_TLBS(pVCpu); 941 941 942 942 LogFlow(("pgmPoolAccessHandlerPT: returns %Rrc (flushed)\n", rc)); … … 1003 1003 #ifdef IN_RC 1004 1004 /* See use in pgmPoolAccessHandlerSimple(). */ 1005 PGM_INVL_GUEST_TLBS( );1005 PGM_INVL_GUEST_TLBS(pVCpu); 1006 1006 #endif 1007 1007 … … 1074 1074 * because we need the stale TLBs in some cases (XP boot). This MUST be fixed properly! 1075 1075 */ 1076 PGM_INVL_GUEST_TLBS( );1076 PGM_INVL_GUEST_TLBS(pVCpu); 1077 1077 #endif 1078 1078 … … 1298 1298 int rc = pgmPoolFlushPage(pPool, pPage); 1299 1299 if (rc == VINF_SUCCESS) 1300 PGM_INVL_GUEST_TLBS( ); /* see PT handler. */1300 PGM_INVL_GUEST_TLBS(VMMGetCpu(pVM)); /* see PT handler. */ 1301 1301 return rc; 1302 1302 } … … 1467 1467 STAM_COUNTER_INC(&pPool->StatCacheKindMismatches); 1468 1468 pgmPoolFlushPage(pPool, pPage); 1469 PGM_INVL_GUEST_TLBS( ); /* see PT handler. */1469 PGM_INVL_GUEST_TLBS(VMMGetCpu(pVM)); /* see PT handler. */ 1470 1470 break; 1471 1471 } … … 2064 2064 pPool->cPresent = 0; 2065 2065 pgmUnlock(pVM); 2066 PGM_INVL_GUEST_TLBS( );2066 PGM_INVL_GUEST_TLBS(VMMGetCpu(pVM)); 2067 2067 STAM_PROFILE_STOP(&pPool->StatClearAll, c); 2068 2068 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r18992 r19808 359 359 Assert(pPT->a[iPTE].n.u1Present); 360 360 # if PGM_SHW_TYPE == PGM_TYPE_EPT 361 HWACCMInvalidatePhysPage(pV M, (RTGCPHYS)GCPtr);361 HWACCMInvalidatePhysPage(pVCpu, (RTGCPHYS)GCPtr); 362 362 # else 363 PGM_INVL_PG( GCPtr);363 PGM_INVL_PG(pVCpu, GCPtr); 364 364 # endif 365 365 }
Note:
See TracChangeset
for help on using the changeset viewer.