Changeset 55937 in vbox for trunk/src/VBox/VMM/VMMRC/CSAMRC.cpp
- Timestamp:
- May 19, 2015 2:27:00 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 100431
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMRC/CSAMRC.cpp
r55900 r55937 72 72 PPATMGCSTATE pPATMGCState; 73 73 bool fPatchCode = PATMIsPatchGCAddr(pVM, pRegFrame->eip); 74 int rc;75 74 NOREF(uErrorCode); 76 75 … … 96 95 * Make this particular page R/W. 97 96 */ 98 rc = PGMShwMakePageWritable(pVCpu, pvFault, PGM_MK_PG_IS_WRITE_FAULT);97 int rc = PGMShwMakePageWritable(pVCpu, pvFault, PGM_MK_PG_IS_WRITE_FAULT); 99 98 AssertMsgRC(rc, ("PGMShwModifyPage -> rc=%Rrc\n", rc)); 100 99 ASMInvalidatePage((void *)(uintptr_t)pvFault); … … 114 113 if (cpl != 3) 115 114 { 116 rc = PATMRCHandleWriteToPatchPage(pVM, pRegFrame, (RTRCPTR)((RTRCUINTPTR)pvRange + offRange), 4 /** @todo */); 117 if (rc == VINF_SUCCESS) 118 return rc; 119 if (rc == VINF_EM_RAW_EMULATE_INSTR) 115 VBOXSTRICTRC rcStrict = PATMRCHandleWriteToPatchPage(pVM, pRegFrame, (RTRCPTR)((RTRCUINTPTR)pvRange + offRange), 116 4 /** @todo */); 117 if (rcStrict == VINF_SUCCESS) 118 return rcStrict; 119 if (rcStrict == VINF_EM_RAW_EMULATE_INSTR) 120 120 { 121 121 STAM_COUNTER_INC(&pVM->csam.s.StatDangerousWrite); 122 122 return VINF_EM_RAW_EMULATE_INSTR; 123 123 } 124 Assert(rc == VERR_PATCH_NOT_FOUND);124 Assert(rcStrict == VERR_PATCH_NOT_FOUND); 125 125 } 126 126 … … 129 129 /* Note that pvFault might be a different address in case of aliases. So use pvRange + offset instead!. */ 130 130 pVM->csam.s.pvDirtyBasePage[pVM->csam.s.cDirtyPages] = (RTRCPTR)((RTRCUINTPTR)pvRange + offRange); 131 pVM->csam.s.pvDirtyFaultPage[pVM->csam.s.cDirtyPages] = (RTRCPTR) ((RTRCUINTPTR)pvRange + offRange);131 pVM->csam.s.pvDirtyFaultPage[pVM->csam.s.cDirtyPages] = (RTRCPTR)pvFault; 132 132 if (++pVM->csam.s.cDirtyPages == CSAM_MAX_DIRTY_PAGES) 133 133 return VINF_CSAM_PENDING_ACTION; … … 137 137 */ 138 138 Log(("csamRCCodePageWriteHandler: enabled r/w for page %RGv\n", pvFault)); 139 rc = PGMShwMakePageWritable(pVCpu, pvFault, PGM_MK_PG_IS_WRITE_FAULT);139 int rc = PGMShwMakePageWritable(pVCpu, pvFault, PGM_MK_PG_IS_WRITE_FAULT); 140 140 AssertMsgRC(rc, ("PGMShwModifyPage -> rc=%Rrc\n", rc)); 141 141 ASMInvalidatePage((void *)(uintptr_t)pvFault);
Note:
See TracChangeset
for help on using the changeset viewer.