Changeset 14103 in vbox for trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
- Timestamp:
- Nov 11, 2008 6:07:03 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r14102 r14103 3176 3176 # else /* PGM_SHW_TYPE == PGM_TYPE_PAE */ 3177 3177 # if PGM_GST_TYPE == PGM_TYPE_32BIT 3178 PX86PDEPAE pPDEDst = &pVM->pgm.s.CTXMID(ap,PaePDs)[0]->a[0];3178 PX86PDEPAE pPDEDst = NULL; 3179 3179 # endif 3180 3180 # endif … … 3215 3215 PGSTPD pPDSrc = pgmGstGetPaePDPtr(&pVM->pgm.s, iPdpt << X86_PDPT_SHIFT, &iPDSrc, &PdpeSrc); 3216 3216 PX86PDPAE pPDPAE = pVM->pgm.s.CTXMID(ap,PaePDs)[0]; 3217 PX86PDEPAE pPDEDst = &pPDPAE->a[iPdpt * X86_PG_PAE_ENTRIES];3217 PX86PDEPAE pPDEDst = pgmShwGetPaePDEPtr(&pVM->pgm.s, iPdpt << X86_PDPT_SHIFT); 3218 3218 PX86PDPT pPdptDst = pgmShwGetPaePDPTPtr(&pVM->pgm.s); 3219 3219 … … 3244 3244 for (unsigned iPD = 0; iPD < RT_ELEMENTS(pPDSrc->a); iPD++) 3245 3245 { 3246 # if PGM_SHW_TYPE == PGM_TYPE_PAE && PGM_GST_TYPE == PGM_TYPE_32BIT 3247 if (!(iPD & (X86_PG_PAE_ENTRIES - 1))) /* Start of new PD. */ 3248 pPDEDst = pgmShwGetPaePDEPtr(&pVM->pgm.s, (uint32_t)iPD << GST_PD_SHIFT); 3249 # endif 3246 3250 # if PGM_SHW_TYPE == PGM_TYPE_32BIT 3247 3251 Assert(&pVM->pgm.s.CTXMID(p,32BitPD)->a[iPD] == pPDEDst); … … 3277 3281 const unsigned cPTs = pMapping->cb >> GST_PD_SHIFT; 3278 3282 iPD += cPTs - 1; 3279 pPDEDst += cPTs + (PGM_GST_TYPE != PGM_SHW_TYPE) * cPTs; /* Only applies to the pae shadow and 32 bits guest case */ 3283 # if PGM_SHW_TYPE != PGM_GST_TYPE /* SHW==PAE && GST==32BIT */ 3284 pPDEDst = pgmShwGetPaePDEPtr(&pVM->pgm.s, (uint32_t)(iPD + 1) << GST_PD_SHIFT); 3285 # else 3286 pPDEDst += cPTs; 3287 /** @todo Assert on / deal with cross PD mappings in PAE/PAE mode! */ 3288 # endif 3280 3289 pMapping = pMapping->CTX_SUFF(pNext); 3281 3290 iPdNoMapping = pMapping ? pMapping->GCPtr >> GST_PD_SHIFT : ~0U; … … 3483 3492 /* advance. */ 3484 3493 iPD += cPTs - 1; 3485 pPDEDst += cPTs + (PGM_GST_TYPE != PGM_SHW_TYPE) * cPTs; /* Only applies to the pae shadow and 32 bits guest case */ 3494 # if PGM_SHW_TYPE != PGM_GST_TYPE /* SHW==PAE && GST==32BIT */ 3495 pPDEDst = pgmShwGetPaePDEPtr(&pVM->pgm.s, (uint32_t)(iPD + 1) << GST_PD_SHIFT); 3496 # else 3497 pPDEDst += cPTs; 3498 /** @todo Assert on / deal with cross PD mappings in PAE/PAE mode! */ 3499 # endif 3486 3500 # if PGM_GST_TYPE != PGM_SHW_TYPE 3487 3501 AssertCompile(PGM_GST_TYPE == PGM_TYPE_32BIT && PGM_SHW_TYPE == PGM_TYPE_PAE);
Note:
See TracChangeset
for help on using the changeset viewer.