Changeset 32521 in vbox
- Timestamp:
- Sep 15, 2010 1:46:22 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r32486 r32521 1932 1932 else 1933 1933 iPTDst -= PGM_SYNC_NR_PAGES / 2; 1934 1935 /* Paranoia: the faulting page can't be present. We assume that below. */ 1936 Assert(!SHW_PTE_IS_P(pPTDst->a[iPTDstPage])); 1937 1934 1938 for (; iPTDst < iPTDstEnd; iPTDst++) 1935 1939 { 1936 if ( !SHW_PTE_IS_P(pPTDst->a[iPTDst]) 1937 || iPTDst == iPTDstPage) /* always sync GCPtrPage */ 1940 const PGSTPTE pPteSrc = &pPTSrc->a[offPTSrc + iPTDst]; 1941 1942 if ( pPteSrc->n.u1Present 1943 && !SHW_PTE_IS_P(pPTDst->a[iPTDst])) 1938 1944 { 1939 GSTPTE PteSrc = pPTSrc->a[offPTSrc + iPTDst];1940 1945 RTGCPTR GCPtrCurPage = (GCPtrPage & ~(RTGCPTR)(GST_PT_MASK << GST_PT_SHIFT)) | ((offPTSrc + iPTDst) << PAGE_SHIFT); 1941 1946 NOREF(GCPtrCurPage); … … 1947 1952 */ 1948 1953 PPGMPAGE pPage; 1949 if ( ((PdeSrc.u & PteSrc.u) & (X86_PTE_RW | X86_PTE_US))1954 if ( ((PdeSrc.u & pPteSrc->u) & (X86_PTE_RW | X86_PTE_US)) 1950 1955 || iPTDst == ((GCPtrPage >> SHW_PT_SHIFT) & SHW_PT_MASK) /* always sync GCPtrPage */ 1951 1956 || !CSAMDoesPageNeedScanning(pVM, GCPtrCurPage) 1952 || ( (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK))1957 || ( (pPage = pgmPhysGetPage(&pVM->pgm.s, pPteSrc->u & GST_PTE_PG_MASK)) 1953 1958 && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage)) 1954 1959 ) 1955 1960 #endif /* else: CSAM not active */ 1956 PGM_BTH_NAME(SyncPageWorker)(pVCpu, &pPTDst->a[iPTDst], PdeSrc, PteSrc, pShwPage, iPTDst);1961 PGM_BTH_NAME(SyncPageWorker)(pVCpu, &pPTDst->a[iPTDst], PdeSrc, *pPteSrc, pShwPage, iPTDst); 1957 1962 Log2(("SyncPage: 4K+ %RGv PteSrc:{P=%d RW=%d U=%d raw=%08llx} PteDst=%08llx%s\n", 1958 GCPtrCurPage, PteSrc.n.u1Present,1959 PteSrc.n.u1Write & PdeSrc.n.u1Write,1960 PteSrc.n.u1User & PdeSrc.n.u1User,1961 (uint64_t) PteSrc.u,1963 GCPtrCurPage, pPteSrc->n.u1Present, 1964 pPteSrc->n.u1Write & PdeSrc.n.u1Write, 1965 pPteSrc->n.u1User & PdeSrc.n.u1User, 1966 (uint64_t)pPteSrc->u, 1962 1967 SHW_PTE_LOG64(pPTDst->a[iPTDst]), 1963 1968 SHW_PTE_IS_TRACK_DIRTY(pPTDst->a[iPTDst]) ? " Track-Dirty" : ""));
Note:
See TracChangeset
for help on using the changeset viewer.