- Timestamp:
- May 23, 2008 12:11:36 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r9073 r9074 277 277 278 278 pVMCB->ctrl.u32InterceptException = HWACCM_SVM_TRAP_MASK; 279 #ifndef DEBUG 279 280 if (pVM->hwaccm.s.fNestedPaging) 280 281 pVMCB->ctrl.u32InterceptException &= ~RT_BIT(14); /* no longer need to intercept #PF. */ 282 #endif 281 283 282 284 pVMCB->ctrl.u32InterceptCtrl1 = SVM_CTRL1_INTERCEPT_INTR … … 1154 1156 RTGCUINTPTR uFaultAddress = pVMCB->ctrl.u64ExitInfo2; /* EXITINFO2 = fault address */ 1155 1157 1158 #ifdef DEBUG 1159 if (pVM->hwaccm.s.fNestedPaging) 1160 { /* A genuine pagefault. 1161 * Forward the trap to the guest by injecting the exception and resuming execution. 1162 */ 1163 Log2(("Page fault at %VGv cr2=%VGv error code %x\n", pCtx->eip, uFaultAddress, errCode)); 1164 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitGuestPF); 1165 1166 TRPMResetTrap(pVM); 1167 1168 /* Now we must update CR2. */ 1169 pCtx->cr2 = uFaultAddress; 1170 1171 Event.au64[0] = 0; 1172 Event.n.u3Type = SVM_EVENT_EXCEPTION; 1173 Event.n.u1Valid = 1; 1174 Event.n.u8Vector = X86_XCPT_PF; 1175 Event.n.u1ErrorCodeValid = 1; 1176 Event.n.u32ErrorCode = errCode; 1177 1178 SVMR0InjectEvent(pVM, pVMCB, pCtx, &Event); 1179 1180 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1181 goto ResumeExecution; 1182 } 1183 #endif 1156 1184 Assert(!pVM->hwaccm.s.fNestedPaging); 1157 1185
Note:
See TracChangeset
for help on using the changeset viewer.