- Timestamp:
- Aug 29, 2007 9:16:39 AM (17 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/EMAll.cpp
r4416 r4418 281 281 DECLINLINE(int) emRamRead(PVM pVM, void *pDest, RTGCPTR GCSrc, uint32_t cb) 282 282 { 283 int rc; 284 #ifdef IN_GC 285 rc = MMGCRamRead(pVM, pDest, GCSrc, cb); 283 #ifdef IN_GC 284 int rc = MMGCRamRead(pVM, pDest, GCSrc, cb); 286 285 if (RT_LIKELY(rc != VERR_ACCESS_DENIED)) 287 286 return rc; … … 291 290 * instruction and it either flushed the TLB or the CPU reused it. 292 291 */ 293 #endif294 292 RTGCPHYS GCPhys; 295 293 RTGCUINTPTR offset; … … 301 299 PGMPhysRead(pVM, GCPhys + offset, pDest, cb); 302 300 return VINF_SUCCESS; 301 #else 302 return PGMPhysReadGCPtrSafe(pVM, pDest, GCSrc, cb); 303 #endif 303 304 } 304 305 … … 329 330 330 331 #else 331 332 int rc; 333 RTGCPHYS GCPhys; 334 RTGCUINTPTR offset; 335 336 offset = GCDest & PAGE_OFFSET_MASK; 337 rc = PGMPhysGCPtr2GCPhys(pVM, GCDest, &GCPhys); 338 AssertRCReturn(rc, rc); 339 PGMPhysWrite(pVM, GCPhys + offset, pSrc, cb); 340 return VINF_SUCCESS; 332 return PGMPhysWriteGCPtrSafe(pVM, GCDest, pSrc, cb); 341 333 #endif 342 334 } … … 701 693 #ifdef IN_GC 702 694 /* Safety check (in theory it could cross a page boundary and fault there though) */ 703 AssertMsgReturn(pParam1 == pvFault, ("eip=%VGv, pParam1=%VGv pvFault=%VGv\n", pRegFrame->eip, pParam1, pvFault), VERR_EM_INTERPRETER);695 // AssertMsgReturn(pParam1 == pvFault, ("eip=%VGv, pParam1=%VGv pvFault=%VGv\n", pRegFrame->eip, pParam1, pvFault), VERR_EM_INTERPRETER); 704 696 #endif 705 697 rc = emRamRead(pVM, &valpar1, pParam1, param1.size); 706 698 if (VBOX_FAILURE(rc)) 707 699 { 708 AssertMsgFailed(("emRamRead %VGv size=%d failed with %Vrc\n", pParam1, param1.size, rc));700 // AssertMsgFailed(("emRamRead %VGv size=%d failed with %Vrc\n", pParam1, param1.size, rc)); 709 701 return VERR_EM_INTERPRETER; 710 702 } … … 1025 1017 #ifdef IN_GC 1026 1018 /* Safety check (in theory it could cross a page boundary and fault there though) */ 1027 AssertMsgReturn(pDest == pvFault, ("eip=%VGv pDest=%VGv pvFault=%VGv\n", pRegFrame->eip, pDest, pvFault), VERR_EM_INTERPRETER);1019 // AssertMsgReturn(pDest == pvFault, ("eip=%VGv pDest=%VGv pvFault=%VGv\n", pRegFrame->eip, pDest, pvFault), VERR_EM_INTERPRETER); 1028 1020 #endif 1029 1021 rc = emRamWrite(pVM, pDest, &val32, param2.size); … … 1124 1116 1125 1117 /* Safety check (in theory it could cross a page boundary and fault there though) */ 1126 AssertMsgReturn(pParam1 == pvFault, ("eip=%VGv pParam1=%VGv pvFault=%VGv\n", pRegFrame->eip, pParam1, pvFault), VERR_EM_INTERPRETER);1118 // AssertMsgReturn(pParam1 == pvFault, ("eip=%VGv pParam1=%VGv pvFault=%VGv\n", pRegFrame->eip, pParam1, pvFault), VERR_EM_INTERPRETER); 1127 1119 1128 1120 #ifdef VBOX_STRICT … … 1262 1254 Log(("PGMInvalidatePage %VGv returned %VGv (%d)\n", pAddrGC, rc, rc)); 1263 1255 Assert(rc == VERR_REM_FLUSHED_PAGES_OVERFLOW); 1264 1265 1256 /** @todo r=bird: we shouldn't ignore returns codes like this... I'm 99% sure the error is fatal. */ 1266 1257 return VERR_EM_INTERPRETER; -
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r4416 r4418 461 461 return MMGCRamReadNoTrapHandler(pDest, GCSrc, cb); 462 462 #else 463 int rc; 464 RTGCPHYS GCPhys; 465 RTGCUINTPTR offset; 466 467 offset = GCSrc & PAGE_OFFSET_MASK; 468 469 /** @todo optimize the loop; no need to convert the address all the time */ 470 rc = PGMPhysGCPtr2GCPhys(pVM, GCSrc, &GCPhys); 471 AssertRCReturn(rc, rc); 472 PGMPhysRead(pVM, GCPhys + offset, pDest, cb); 473 return VINF_SUCCESS; 463 return PGMPhysReadGCPtrSafe(pVM, pDest, GCSrc, cb); 474 464 #endif 475 465 } … … 480 470 return MMGCRamWriteNoTrapHandler(GCDest, pSrc, cb); 481 471 #else 482 int rc; 483 RTGCPHYS GCPhys; 484 RTGCUINTPTR offset; 485 486 /** @todo optimize the loop; no need to convert the address all the time */ 487 offset = GCDest & PAGE_OFFSET_MASK; 488 rc = PGMPhysGCPtr2GCPhys(pVM, GCDest, &GCPhys); 489 AssertRCReturn(rc, rc); 490 PGMPhysWrite(pVM, GCPhys + offset, pSrc, cb); 491 return VINF_SUCCESS; 472 return PGMPhysWriteGCPtrSafe(pVM, GCDest, pSrc, cb); 492 473 #endif 493 474 }
Note:
See TracChangeset
for help on using the changeset viewer.