Lines Matching refs:patm

23 #include <VBox/vmm/patm.h>
62 pVM->patm.s.pvFaultMonitor = (RTRCPTR)(RTRCUINTPTR)pvFault;
84 if ( PAGE_ADDRESS(GCPtr) < PAGE_ADDRESS(pVM->patm.s.pPatchedInstrGCLowest)
85 || PAGE_ADDRESS(GCPtr) > PAGE_ADDRESS(pVM->patm.s.pPatchedInstrGCHighest)
89 STAM_PROFILE_ADV_START(&pVM->patm.s.StatPatchWriteDetect, a);
94 pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(CTXSUFF(&pVM->patm.s.PatchLookupTree)->PatchTreeByPage, (AVLOU32KEY)pWritePageStart);
99 pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(CTXSUFF(&pVM->patm.s.PatchLookupTree)->PatchTreeByPage, (AVLOU32KEY)pWritePageEnd);
117 STAM_COUNTER_INC(&pVM->patm.s.StatPatchWriteInterpreted);
118 STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatPatchWriteDetect, a);
121 STAM_COUNTER_INC(&pVM->patm.s.StatPatchWriteInterpretedFailed);
133 STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatPatchWriteDetect, a);
137 STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatPatchWriteDetect, a);
162 if (CTXSUFF(pVM->patm.s.pGCState)->uPendingAction)
164 LogFlow(("PATMRC: Pending action %x at %x\n", CTXSUFF(pVM->patm.s.pGCState)->uPendingAction, pRegFrame->eip));
171 if ( (pRegFrame->eax & CTXSUFF(pVM->patm.s.pGCState)->uPendingAction)
175 CTXSUFF(pVM->patm.s.pGCState)->uPendingAction = 0;
203 STAM_COUNTER_INC(&pVM->patm.s.StatFunctionFound);
212 STAM_COUNTER_INC(&pVM->patm.s.StatFunctionNotFound);
219 if (pVM->patm.s.fOutOfMemory)
223 STAM_COUNTER_INC(&pVM->patm.s.StatFunctionNotFound);
226 STAM_COUNTER_INC(&pVM->patm.s.StatFunctionNotFound);
240 Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX|PATM_RESTORE_EDI));
241 Assert(pVM->patm.s.CTXSUFF(pGCState)->fPIF == 0);
243 pRegFrame->eax = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEAX;
244 pRegFrame->ecx = pVM->patm.s.CTXSUFF(pGCState)->Restore.uECX;
245 pRegFrame->edi = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEDI;
247 pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags = 0;
250 pVM->patm.s.CTXSUFF(pGCState)->fPIF = 1;
252 STAM_COUNTER_INC(&pVM->patm.s.StatCheckPendingIRQ);
262 Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX|PATM_RESTORE_EDI));
263 Assert(pVM->patm.s.CTXSUFF(pGCState)->fPIF == 0);
268 pRegFrame->eax = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEAX;
269 pRegFrame->ecx = pVM->patm.s.CTXSUFF(pGCState)->Restore.uECX;
270 pRegFrame->edi = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEDI;
271 pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags = 0;
274 pVM->patm.s.CTXSUFF(pGCState)->fPIF = 1;
281 Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX));
282 Assert(pVM->patm.s.CTXSUFF(pGCState)->fPIF == 0);
284 pRegFrame->eax = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEAX;
285 pRegFrame->ecx = pVM->patm.s.CTXSUFF(pGCState)->Restore.uECX;
286 pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags = 0;
291 STAM_COUNTER_INC(&pVM->patm.s.StatEmulIret);
294 pVM->patm.s.CTXSUFF(pGCState)->fPIF = 1;
300 STAM_COUNTER_INC(&pVM->patm.s.StatEmulIretFailed);
306 Log(("PATMRC: CLI at %x (current IF=%d iopl=%d)\n", pRegFrame->eip, !!(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags & X86_EFL_IF), X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags) ));
311 Log(("PATMRC: STI at %x (current IF=%d iopl=%d)\n", pRegFrame->eip, !!(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags & X86_EFL_IF), X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags) ));
316 Log(("PATMRC: POPF setting IF at %x (current IF=%d iopl=%d)\n", pRegFrame->eip, !!(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags & X86_EFL_IF), X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags)));
321 Log(("PATMRC: POPF at %x (current IF=%d iopl=%d)\n", pRegFrame->eip, !!(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags & X86_EFL_IF), X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags)));
326 Log(("PATMRC: PUSHF at %x (current IF=%d iopl=%d)\n", pRegFrame->eip, !!(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags & X86_EFL_IF), X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags) ));
372 Log(("PATMRC: IRET from %x (IF->1) current eflags=%x\n", pRegFrame->eip, pVM->patm.s.CTXSUFF(pGCState)->uVMFlags));
419 Log(("PATMRC: RET from %x to %x ESP=%x iopl=%d\n", pRegFrame->eip, pRegFrame->edx, pRegFrame->ebx, X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags)));
424 Log(("PATMRC: CALL to %RRv return addr %RRv ESP=%x iopl=%d\n", pVM->patm.s.CTXSUFF(pGCState)->GCCallPatchTargetAddr, pVM->patm.s.CTXSUFF(pGCState)->GCCallReturnAddr, pRegFrame->edx, X86_EFL_GET_IOPL(pVM->patm.s.CTXSUFF(pGCState)->uVMFlags)));
435 CTXSUFF(pVM->patm.s.pGCState)->uPendingAction = 0;
437 AssertMsgFailed(("Unexpected OP_ILLUD2 in patch code at %x (pending action %x)!!!!\n", pRegFrame->eip, CTXSUFF(pVM->patm.s.pGCState)->uPendingAction));
471 pRec = (PPATMPATCHREC)RTAvloU32Get(&CTXSUFF(pVM->patm.s.PatchLookupTree)->PatchTree, (AVLOU32KEY)(pRegFrame->eip - 1)); /* eip is pointing to the instruction *after* 'int 3' already */
479 STAM_COUNTER_INC(&pVM->patm.s.StatInt3BlockRun);