Changeset 28 in vbox
- Timestamp:
- Jan 15, 2007 4:48:27 PM (18 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
-
MM.cpp (modified) (1 diff)
-
PGM.cpp (modified) (4 diffs)
-
PGMInternal.h (modified) (7 diffs)
-
PGMPhys.cpp (modified) (3 diffs)
-
VMMAll/PGMAllPhys.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/MM.cpp
r23 r28 211 211 if (VBOX_SUCCESS(rc)) 212 212 { 213 /* Allocate the first 4 MBchunk, as we'll map ROM ranges there. */213 /* Allocate the first chunk, as we'll map ROM ranges there. */ 214 214 rc = PGM3PhysGrowRange(pVM, (RTGCPHYS)0); 215 215 if (VBOX_SUCCESS(rc)) -
trunk/src/VBox/VMM/PGM.cpp
r23 r28 1164 1164 { 1165 1165 pCur->pNextGC = MMHyperHC2GC(pVM, pCur->pNextHC); 1166 if (pCur->p vHCChunkGC)1167 pCur->p vHCChunkGC = MMHyperHC2GC(pVM, pCur->pvHCChunkHC);1166 if (pCur->pavHCChunkGC) 1167 pCur->pavHCChunkGC = MMHyperHC2GC(pVM, pCur->pavHCChunkHC); 1168 1168 } 1169 1169 } … … 1302 1302 { 1303 1303 unsigned iChunk = iPage >> (PGM_DYNAMIC_CHUNK_SHIFT - PAGE_SHIFT); 1304 if (pRam->p vHCChunkHC[iChunk])1305 ASMMemZero32((char *)pRam->p vHCChunkHC[iChunk] + ((iPage << PAGE_SHIFT) & PGM_DYNAMIC_CHUNK_OFFSET_MASK), PAGE_SIZE);1304 if (pRam->pavHCChunkHC[iChunk]) 1305 ASMMemZero32((char *)pRam->pavHCChunkHC[iChunk] + ((iPage << PAGE_SHIFT) & PGM_DYNAMIC_CHUNK_OFFSET_MASK), PAGE_SIZE); 1306 1306 } 1307 1307 else … … 1397 1397 for (unsigned iChunk = 0; iChunk < (pRam->cb >> PGM_DYNAMIC_CHUNK_SHIFT); iChunk++) 1398 1398 { 1399 if (pRam->p vHCChunkHC[iChunk])1399 if (pRam->pavHCChunkHC[iChunk]) 1400 1400 { 1401 1401 SSMR3PutU8(pSSM, 1); /* chunk present */ 1402 SSMR3PutMem(pSSM, pRam->p vHCChunkHC[iChunk], PGM_DYNAMIC_CHUNK_SIZE);1402 SSMR3PutMem(pSSM, pRam->pavHCChunkHC[iChunk], PGM_DYNAMIC_CHUNK_SIZE); 1403 1403 } 1404 1404 else … … 1616 1616 return rc; 1617 1617 1618 Assert(pRam->p vHCChunkHC[iChunk]);1619 1620 SSMR3GetMem(pSSM, pRam->p vHCChunkHC[iChunk], PGM_DYNAMIC_CHUNK_SIZE);1618 Assert(pRam->pavHCChunkHC[iChunk]); 1619 1620 SSMR3GetMem(pSSM, pRam->pavHCChunkHC[iChunk], PGM_DYNAMIC_CHUNK_SIZE); 1621 1621 } 1622 1622 /* else nothing to do */ -
trunk/src/VBox/VMM/PGMInternal.h
r23 r28 478 478 uint32_t fFlags; 479 479 480 /** HC virtual lookup ranges for 4 MBchunks. Currently only used with MM_RAM_FLAGS_DYNAMIC_ALLOC ranges. */481 GCPTRTYPE(void **) p vHCChunkGC; /**< @todo r=bird: ditto */482 /** HC virtual lookup ranges for 4 MBchunks. Currently only used with MM_RAM_FLAGS_DYNAMIC_ALLOC ranges. */483 HCPTRTYPE(void **) p vHCChunkHC; /**< @todo r=bird: rename to papvHCChunkHC */480 /** HC virtual lookup ranges for chunks. Currently only used with MM_RAM_FLAGS_DYNAMIC_ALLOC ranges. */ 481 GCPTRTYPE(void **) pavHCChunkGC; 482 /** HC virtual lookup ranges for chunks. Currently only used with MM_RAM_FLAGS_DYNAMIC_ALLOC ranges. */ 483 HCPTRTYPE(void **) pavHCChunkHC; 484 484 485 485 /** Start of the HC mapping of the range. … … 502 502 /** Return hc ptr corresponding to the ram range and physical offset */ 503 503 #define PGMRAMRANGE_GETHCPTR(pRam, off) \ 504 (pRam->fFlags & MM_RAM_FLAGS_DYNAMIC_ALLOC) ? (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[(off >> PGM_DYNAMIC_CHUNK_SHIFT)] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)) \504 (pRam->fFlags & MM_RAM_FLAGS_DYNAMIC_ALLOC) ? (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[(off >> PGM_DYNAMIC_CHUNK_SHIFT)] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)) \ 505 505 : (RTHCPTR)((RTHCUINTPTR)pRam->pvHC + off); 506 506 … … 1836 1836 unsigned idx = (off >> PGM_DYNAMIC_CHUNK_SHIFT); 1837 1837 /* Physical chunk in dynamically allocated range not present? */ 1838 if (RT_UNLIKELY(!CTXSUFF(pRam->p vHCChunk)[idx]))1838 if (RT_UNLIKELY(!CTXSUFF(pRam->pavHCChunk)[idx])) 1839 1839 { 1840 1840 #ifdef IN_RING3 … … 1846 1846 return rc; 1847 1847 } 1848 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK));1848 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)); 1849 1849 return VINF_SUCCESS; 1850 1850 } … … 1881 1881 unsigned idx = (off >> PGM_DYNAMIC_CHUNK_SHIFT); 1882 1882 /* Physical chunk in dynamically allocated range not present? */ 1883 if (RT_UNLIKELY(!CTXSUFF(pRam->p vHCChunk)[idx]))1883 if (RT_UNLIKELY(!CTXSUFF(pRam->pavHCChunk)[idx])) 1884 1884 { 1885 1885 #ifdef IN_RING3 … … 1891 1891 return rc; 1892 1892 } 1893 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK));1893 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)); 1894 1894 return VINF_SUCCESS; 1895 1895 } … … 1940 1940 { 1941 1941 unsigned idx = (off >> PGM_DYNAMIC_CHUNK_SHIFT); 1942 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK));1942 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)); 1943 1943 return VINF_SUCCESS; 1944 1944 } -
trunk/src/VBox/VMM/PGMPhys.cpp
r23 r28 158 158 pNew->cb = cb; 159 159 pNew->fFlags = fFlags; 160 pNew->p vHCChunkHC= NULL;161 pNew->p vHCChunkGC= 0;160 pNew->pavHCChunkHC = NULL; 161 pNew->pavHCChunkGC = 0; 162 162 163 163 unsigned iPage = cb >> PAGE_SHIFT; … … 169 169 else if (fFlags & MM_RAM_FLAGS_DYNAMIC_ALLOC) 170 170 { 171 /* Allocate memory for 4 MBchunk to HC ptr lookup array. */172 rc = MMHyperAlloc(pVM, (cb >> PGM_DYNAMIC_CHUNK_SHIFT) * sizeof(void *), 16, MM_TAG_PGM, (void **)&pNew->p vHCChunkHC);171 /* Allocate memory for chunk to HC ptr lookup array. */ 172 rc = MMHyperAlloc(pVM, (cb >> PGM_DYNAMIC_CHUNK_SHIFT) * sizeof(void *), 16, MM_TAG_PGM, (void **)&pNew->pavHCChunkHC); 173 173 AssertMsgReturn(rc == VINF_SUCCESS, ("MMHyperAlloc(,%#x,,,) -> %Vrc\n", cbRam, cb), rc); 174 174 175 pNew->p vHCChunkGC = MMHyperHC2GC(pVM, pNew->pvHCChunkHC);176 Assert(pNew->p vHCChunkGC);175 pNew->pavHCChunkGC = MMHyperHC2GC(pVM, pNew->pavHCChunkHC); 176 Assert(pNew->pavHCChunkGC); 177 177 178 178 /* Physical memory will be allocated on demand. */ … … 278 278 } 279 279 off >>= (PGM_DYNAMIC_CHUNK_SHIFT - PAGE_SHIFT); 280 pRam->p vHCChunkHC[off] = pvRam;280 pRam->pavHCChunkHC[off] = pvRam; 281 281 282 282 /* Notify the recompiler. */ -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r23 r28 197 197 } 198 198 unsigned idx = (off >> PGM_DYNAMIC_CHUNK_SHIFT); 199 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK));199 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[idx] + (off & PGM_DYNAMIC_CHUNK_OFFSET_MASK)); 200 200 return VINF_SUCCESS; 201 201 } … … 236 236 for (unsigned iChunk = 0; iChunk < (pRam->cb >> PGM_DYNAMIC_CHUNK_SHIFT); iChunk++) 237 237 { 238 if (CTXSUFF(pRam->p vHCChunk)[iChunk])239 { 240 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[iChunk];238 if (CTXSUFF(pRam->pavHCChunk)[iChunk]) 239 { 240 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[iChunk]; 241 241 if (off < PGM_DYNAMIC_CHUNK_SIZE) 242 242 return true; … … 277 277 for (unsigned iChunk = 0; iChunk < (pRam->cb >> PGM_DYNAMIC_CHUNK_SHIFT); iChunk++) 278 278 { 279 if (CTXSUFF(pRam->p vHCChunk)[iChunk])280 { 281 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[iChunk];279 if (CTXSUFF(pRam->pavHCChunk)[iChunk]) 280 { 281 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[iChunk]; 282 282 if (off < PGM_DYNAMIC_CHUNK_SIZE) 283 283 { … … 325 325 for (unsigned iChunk = 0; iChunk < (pRam->cb >> PGM_DYNAMIC_CHUNK_SHIFT); iChunk++) 326 326 { 327 if (CTXSUFF(pRam->p vHCChunk)[iChunk])328 { 329 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[iChunk];327 if (CTXSUFF(pRam->pavHCChunk)[iChunk]) 328 { 329 RTHCUINTPTR off = (RTHCUINTPTR)HCPtr - (RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[iChunk]; 330 330 if (off < PGM_DYNAMIC_CHUNK_SIZE) 331 331 { … … 459 459 unsigned idx = (iPage >> (PGM_DYNAMIC_CHUNK_SHIFT - PAGE_SHIFT)); 460 460 461 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->p vHCChunk)[idx] + ((iPage << PAGE_SHIFT) & PGM_DYNAMIC_CHUNK_OFFSET_MASK) + off);461 *pHCPtr = (RTHCPTR)((RTHCUINTPTR)CTXSUFF(pRam->pavHCChunk)[idx] + ((iPage << PAGE_SHIFT) & PGM_DYNAMIC_CHUNK_OFFSET_MASK) + off); 462 462 } 463 463 else
Note:
See TracChangeset
for help on using the changeset viewer.

