Changeset 7677 in vbox
- Timestamp:
- Apr 1, 2008 12:20:28 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/x86.h
r7676 r7677 837 837 #define X86_PG_PAE_ENTRIES 512 838 838 /** Number of entries in a PAE PDPTE. */ 839 #define X86_PG_PAE_PDP TE_ENTRIES4839 #define X86_PG_PAE_PDPE_ENTRIES 4 840 840 841 841 /** Number of entries in an AMD64 PT/PD/PDPTR/L4/L5. */ 842 842 #define X86_PG_AMD64_ENTRIES X86_PG_PAE_ENTRIES 843 843 /** Number of entries in an AMD64 PDPTE. */ 844 #define X86_PG_AMD64_PDP TE_ENTRIES512844 #define X86_PG_AMD64_PDPE_ENTRIES 512 845 845 846 846 /** The size of a 4KB page. */ … … 1485 1485 { 1486 1486 /** PDE Array. */ 1487 X86PDPE a[X86_PG_AMD64_PDP TE_ENTRIES];1487 X86PDPE a[X86_PG_AMD64_PDPE_ENTRIES]; 1488 1488 } X86PDPTR; 1489 1489 /** Pointer to a page directory pointer table. */ -
trunk/src/VBox/VMM/PGM.cpp
r7676 r7677 3165 3165 3166 3166 int rc = VINF_SUCCESS; 3167 const unsigned c = fLongMode ? ELEMENTS(pPDPTR->a) : X86_PG_PAE_PDP TE_ENTRIES;3167 const unsigned c = fLongMode ? ELEMENTS(pPDPTR->a) : X86_PG_PAE_PDPE_ENTRIES; 3168 3168 for (unsigned i = 0; i < c; i++) 3169 3169 { -
trunk/src/VBox/VMM/PGMGst.h
r7657 r7677 36 36 #undef GST_PT_SHIFT 37 37 #undef GST_PT_MASK 38 39 #if PGM_GST_TYPE == PGM_TYPE_32BIT 38 #undef GST_TOTAL_PD_ENTRIES 39 #undef GST_CR3_PAGE_MASK 40 #undef GST_PDPE_ENTRIES 41 42 #if PGM_GST_TYPE == PGM_TYPE_32BIT \ 43 || PGM_GST_TYPE == PGM_TYPE_REAL \ 44 || PGM_GST_TYPE == PGM_TYPE_PROT 40 45 # define GSTPT X86PT 41 46 # define PGSTPT PX86PT … … 52 57 # define GST_PD_SHIFT X86_PD_SHIFT 53 58 # define GST_PD_MASK X86_PD_MASK 59 # define GST_TOTAL_PD_ENTRIES X86_PG_ENTRIES 54 60 # define GST_PTE_PG_MASK X86_PTE_PG_MASK 55 61 # define GST_PT_SHIFT X86_PT_SHIFT 56 62 # define GST_PT_MASK X86_PT_MASK 57 #else 63 # define GST_CR3_PAGE_MASK X86_CR3_PAGE_MASK 64 #elif PGM_GST_TYPE == PGM_TYPE_PAE \ 65 || PGM_GST_TYPE == PGM_TYPE_AMD64 58 66 # define GSTPT X86PTPAE 59 67 # define PGSTPT PX86PTPAE … … 70 78 # define GST_PD_SHIFT X86_PD_PAE_SHIFT 71 79 # define GST_PD_MASK X86_PD_PAE_MASK 80 # if PGM_GST_TYPE == PGM_TYPE_PAE 81 # define GST_TOTAL_PD_ENTRIES (X86_PG_PAE_ENTRIES * X86_PG_PAE_PDPE_ENTRIES) 82 # define GST_PDPE_ENTRIES X86_PG_PAE_PDPE_ENTRIES 83 # else 84 # define GST_TOTAL_PD_ENTRIES (X86_PG_AMD64_ENTRIES * X86_PG_AMD64_PDPE_ENTRIES) 85 # define GST_PDPE_ENTRIES X86_PG_AMD64_PDPE_ENTRIES 86 # endif 72 87 # define GST_PTE_PG_MASK X86_PTE_PAE_PG_MASK 73 88 # define GST_PT_SHIFT X86_PT_PAE_SHIFT 74 89 # define GST_PT_MASK X86_PT_PAE_MASK 90 # define GST_CR3_PAGE_MASK X86_CR3_PAE_PAGE_MASK 75 91 #endif 76 92 -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r7676 r7677 1928 1928 if (fPageTable) 1929 1929 PdeDst.u = pShwPage->Core.Key 1930 | (PdeSrc.u & ~( X86_PDE_PAE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D));1930 | (PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D)); 1931 1931 else 1932 1932 { 1933 1933 PdeDst.u = pShwPage->Core.Key 1934 | (PdeSrc.u & ~( X86_PDE_PAE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D));1934 | (PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D)); 1935 1935 # ifdef PGM_SYNC_DIRTY_BIT /* (see explanation and assumptions further down.) */ 1936 1936 if (!PdeSrc.b.u1Dirty && PdeSrc.b.u1Write) … … 1974 1974 * Start by syncing the page directory entry so CSAM's TLB trick works. 1975 1975 */ 1976 PdeDst.u = (PdeDst.u & ( X86_PDE_PAE_PG_MASK | X86_PDE_AVL_MASK))1977 | (PdeSrc.u & ~( X86_PDE_PAE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D));1976 PdeDst.u = (PdeDst.u & (SHW_PDE_PG_MASK | X86_PDE_AVL_MASK)) 1977 | (PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D)); 1978 1978 *pPdeDst = PdeDst; 1979 1979 … … 2060 2060 * Start by syncing the page directory entry. 2061 2061 */ 2062 PdeDst.u = (PdeDst.u & ( X86_PDE_PAE_PG_MASK | (X86_PDE_AVL_MASK & ~PGM_PDFLAGS_TRACK_DIRTY)))2063 | (PdeSrc.u & ~( X86_PDE_PAE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D));2062 PdeDst.u = (PdeDst.u & (SHW_PDE_PG_MASK | (X86_PDE_AVL_MASK & ~PGM_PDFLAGS_TRACK_DIRTY))) 2063 | (PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PDE_AVL_MASK | X86_PDE_PCD | X86_PDE_PWT | X86_PDE_PS | X86_PDE4M_G | X86_PDE4M_D)); 2064 2064 2065 2065 # ifdef PGM_SYNC_DIRTY_BIT … … 2088 2088 /* Get address and flags from the source PDE. */ 2089 2089 SHWPTE PteDstBase; 2090 PteDstBase.u = PdeSrc.u & ~( X86_PTE_PAE_PG_MASK | X86_PTE_AVL_MASK | X86_PTE_PAT | X86_PTE_PCD | X86_PTE_PWT);2090 PteDstBase.u = PdeSrc.u & ~(GST_PDE_PG_MASK | X86_PTE_AVL_MASK | X86_PTE_PAT | X86_PTE_PCD | X86_PTE_PWT); 2091 2091 2092 2092 /* Loop thru the entries in the shadow PT. */ … … 2349 2349 #if (PGM_GST_TYPE == PGM_TYPE_32BIT || PGM_GST_TYPE == PGM_TYPE_REAL || PGM_GST_TYPE == PGM_TYPE_PROT || PGM_GST_TYPE == PGM_TYPE_PAE) && PGM_SHW_TYPE != PGM_TYPE_AMD64 2350 2350 2351 # 2351 # ifndef IN_RING0 2352 2352 if (!(fPage & X86_PTE_US)) 2353 2353 { … … 2359 2359 CSAMMarkPage(pVM, (RTGCPTR)GCPtrPage, true); 2360 2360 } 2361 # 2361 # endif 2362 2362 /* 2363 2363 * Get guest PD and index. … … 2573 2573 iPdNoMapping = ~0U; 2574 2574 } 2575 # if PGM_GST_TYPE == PGM_TYPE_PAE 2576 for (unsigned iPDPTRE = 0; iPDPTRE < X86_PG_PAE_PDPTE_ENTRIES; iPDPTRE++) 2577 # elif PGM_GST_TYPE == PGM_TYPE_AMD64 2578 for (unsigned iPDPTRE = 0; iPDPTRE < X86_PG_AMD64_PDPTE_ENTRIES; iPDPTRE++) 2579 # endif 2575 # if PGM_GST_TYPE == PGM_TYPE_PAE || PGM_GST_TYPE == PGM_TYPE_AMD64 2576 for (unsigned iPDPTRE = 0; iPDPTRE < GST_PDPE_ENTRIES; iPDPTRE++) 2580 2577 { 2581 # if PGM_GST_TYPE == PGM_TYPE_PAE || PGM_GST_TYPE == PGM_TYPE_AMD642582 2578 unsigned iPDSrc; 2583 2579 # if PGM_SHW_TYPE == PGM_TYPE_PAE … … 2596 2592 continue; 2597 2593 } 2594 # else 2595 { 2598 2596 # endif /* if PGM_GST_TYPE == PGM_TYPE_PAE || PGM_GST_TYPE == PGM_TYPE_AMD64 */ 2599 2597 for (unsigned iPD = 0; iPD < ELEMENTS(pPDSrc->a); iPD++) … … 3244 3242 * Big Page. 3245 3243 */ 3246 uint64_t fIgnoreFlags = X86_PDE_AVL_MASK | X86_PDE_PAE_PG_MASK | X86_PDE4M_G | X86_PDE4M_D | X86_PDE4M_PS | X86_PDE4M_PWT | X86_PDE4M_PCD;3244 uint64_t fIgnoreFlags = X86_PDE_AVL_MASK | GST_PDE_PG_MASK | X86_PDE4M_G | X86_PDE4M_D | X86_PDE4M_PS | X86_PDE4M_PWT | X86_PDE4M_PCD; 3247 3245 if (!PdeSrc.b.u1Dirty && PdeSrc.b.u1Write) 3248 3246 { -
trunk/src/VBox/VMM/VMMAll/PGMAllGst.h
r7676 r7677 39 39 #undef GST_TOTAL_PD_ENTRIES 40 40 #undef GST_CR3_PAGE_MASK 41 #undef GST_PDPE_ENTRIES 41 42 42 43 #if PGM_GST_TYPE == PGM_TYPE_32BIT \ … … 79 80 # define GST_PD_MASK X86_PD_PAE_MASK 80 81 # if PGM_GST_TYPE == PGM_TYPE_PAE 81 # define GST_TOTAL_PD_ENTRIES (X86_PG_PAE_ENTRIES * X86_PG_PAE_PDPTE_ENTRIES) 82 # define GST_TOTAL_PD_ENTRIES (X86_PG_PAE_ENTRIES * X86_PG_PAE_PDPE_ENTRIES) 83 # define GST_PDPE_ENTRIES X86_PG_PAE_PDPE_ENTRIES 82 84 # else 83 # define GST_TOTAL_PD_ENTRIES (X86_PG_AMD64_ENTRIES * X86_PG_AMD64_PDPTE_ENTRIES) 85 # define GST_TOTAL_PD_ENTRIES (X86_PG_AMD64_ENTRIES * X86_PG_AMD64_PDPE_ENTRIES) 86 # define GST_PDPE_ENTRIES X86_PG_AMD64_PDPE_ENTRIES 84 87 # endif 85 88 # define GST_PTE_PG_MASK X86_PTE_PAE_PG_MASK -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r7676 r7677 2989 2989 2990 2990 case PGMPOOLKIND_ROOT_PAE_PD: 2991 for (unsigned iPage = 0; iPage < X86_PG_PAE_ENTRIES * X86_PG_PAE_PDP TE_ENTRIES; iPage++)2991 for (unsigned iPage = 0; iPage < X86_PG_PAE_ENTRIES * X86_PG_PAE_PDPE_ENTRIES; iPage++) 2992 2992 if ((u.pau64[iPage] & (PGM_PDFLAGS_MAPPING | X86_PDE_P)) == X86_PDE_P) 2993 2993 u.pau64[iPage] = 0; -
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r7676 r7677 73 73 # define SHW_PDPTR_SHIFT X86_PDPTR_SHIFT 74 74 # define SHW_PDPTR_MASK X86_PDPTR_MASK 75 # define SHW_TOTAL_PD_ENTRIES (X86_PG_AMD64_ENTRIES*X86_PG_AMD64_PDPE_ENTRIES) 75 76 # define SHW_POOL_ROOT_IDX PGMPOOL_IDX_PML4 76 77 #else /* 32 bits PAE mode */ 77 78 # define SHW_PDPTR_SHIFT X86_PDPTR_SHIFT 78 79 # define SHW_PDPTR_MASK X86_PDPTR_MASK_32 79 # define SHW_TOTAL_PD_ENTRIES (X86_PG_PAE_ENTRIES*X86_PG_PAE_PDP TE_ENTRIES)80 # define SHW_TOTAL_PD_ENTRIES (X86_PG_PAE_ENTRIES*X86_PG_PAE_PDPE_ENTRIES) 80 81 # define SHW_POOL_ROOT_IDX PGMPOOL_IDX_PAE_PD 81 82 #endif
Note:
See TracChangeset
for help on using the changeset viewer.