Changeset 7842 in vbox for trunk/src/VBox
- Timestamp:
- Apr 9, 2008 3:19:16 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r7822 r7842 2971 2971 unsigned cErrors = 0; 2972 2972 2973 #if PGM_GST_TYPE == PGM_TYPE_32BIT 2973 #if PGM_GST_TYPE == PGM_TYPE_32BIT \ 2974 || PGM_GST_TYPE == PGM_TYPE_PAE 2975 2974 2976 PPGM pPGM = &pVM->pgm.s; 2975 2977 RTHCPHYS HCPhysShw; /* page address derived from the shadow page tables. */ … … 2979 2981 2980 2982 /* 2981 * Check that the Guest CR3 and all it's mappings are correct. 2982 */ 2983 * Check that the Guest CR3 and all its mappings are correct. 2984 */ 2985 # if PGM_GST_TYPE == PGM_TYPE_32BIT 2983 2986 AssertMsgReturn(pPGM->GCPhysCR3 == (cr3 & GST_CR3_PAGE_MASK), 2984 2987 ("Invalid GCPhysCR3=%VGp cr3=%VGp\n", pPGM->GCPhysCR3, (RTGCPHYS)cr3), 2985 2988 false); 2986 2989 rc = PGMShwGetPage(pVM, pPGM->pGuestPDGC, NULL, &HCPhysShw); 2990 # else 2991 rc = PGMShwGetPage(pVM, pPGM->pGstPaePDPTGC, NULL, &HCPhysShw); 2992 # endif 2987 2993 AssertRCReturn(rc, 1); 2988 2994 HCPhys = NIL_RTHCPHYS; 2989 2995 rc = pgmRamGCPhys2HCPhys(pPGM, cr3 & GST_CR3_PAGE_MASK, &HCPhys); 2990 2996 AssertMsgReturn(HCPhys == HCPhysShw, ("HCPhys=%VHp HCPhyswShw=%VHp (cr3)\n", HCPhys, HCPhysShw), false); 2991 # if def IN_RING32997 # if PGM_GST_TYPE == PGM_TYPE_32BIT && defined(IN_RING3) 2992 2998 RTGCPHYS GCPhys; 2993 2999 rc = PGMR3DbgHCPtr2GCPhys(pVM, pPGM->pGuestPDHC, &GCPhys); … … 2995 3001 AssertMsgReturn((cr3 & GST_CR3_PAGE_MASK) == GCPhys, ("GCPhys=%VGp cr3=%VGp\n", GCPhys, (RTGCPHYS)cr3), false); 2996 3002 # endif 2997 const X86PD *pPDSrc = CTXSUFF(pPGM->pGuestPD); 3003 3004 # if PGM_GST_TYPE == PGM_TYPE_32BIT 3005 const GSTPD *pPDSrc = CTXSUFF(pPGM->pGuestPD); 3006 # endif 2998 3007 2999 3008 /* … … 3022 3031 iPDDst++, GCPtr += _4G / cPDEs) 3023 3032 { 3033 # if PGM_GST_TYPE == PGM_TYPE_PAE 3034 const PX86PDPAE pPDSrc = pPGM->CTXMID(ap,PaePDs)[(GCPtr >> GST_PDPT_SHIFT) & GST_PDPT_MASK]; 3035 #endif 3036 3024 3037 const SHWPDE PdeDst = pPDDst->a[iPDDst]; 3025 3038 if (PdeDst.u & PGM_PDFLAGS_MAPPING) … … 3062 3075 } 3063 3076 3064 const X86PDE PdeSrc = pPDSrc->a[iPDDst >> (GST_PD_SHIFT - SHW_PD_SHIFT)];3077 const GSTPDE PdeSrc = pPDSrc->a[(iPDDst >> (GST_PD_SHIFT - SHW_PD_SHIFT)) & GST_PD_MASK]; 3065 3078 if (!PdeSrc.n.u1Present) 3066 3079 { … … 3081 3094 else 3082 3095 { 3096 # if PGM_GST_TYPE == PGM_TYPE_32BIT 3083 3097 if (PdeSrc.u & X86_PDE4M_PG_HIGH_MASK) 3084 3098 { … … 3088 3102 continue; 3089 3103 } 3104 # endif 3090 3105 GCPhysGst = PdeSrc.u & GST_PDE_BIG_PG_MASK; 3091 3106 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT
Note:
See TracChangeset
for help on using the changeset viewer.