Lines Matching refs:pDis

695  * @param   pDis        The disassembled instruction.
698 DECLINLINE(bool) pgmPoolMonitorIsForking(PPGMPOOL pPool, PDISCPUSTATE pDis, unsigned offFault)
716 if ( pDis->pCurInstr->uOpcode == OP_BTR
736 * @param pDis The disassembly info for the faulting instruction.
741 DECLINLINE(bool) pgmPoolMonitorIsReused(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pDis, RTGCPTR pvFault)
756 LogFlow(("Reused instr %RGv %d at %RGv param1.fUse=%llx param1.reg=%d\n", pRegFrame->rip, pDis->pCurInstr->uOpcode, pvFault, pDis->Param1.fUse, pDis->Param1.Base.idxGenReg));
762 switch (pDis->pCurInstr->uOpcode)
788 if ( pDis->fPrefix == (DISPREFIX_REP|DISPREFIX_REX)
792 Assert(pDis->uCpuMode == DISCPUMODE_64BIT);
799 if ( ( (pDis->Param1.fUse & DISUSE_REG_GEN32)
800 || (pDis->Param1.fUse & DISUSE_REG_GEN64))
801 && (pDis->Param1.Base.idxGenReg == DISGREG_ESP))
819 * @param pDis The disassembly of the write instruction.
825 static int pgmPoolAccessHandlerFlush(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,
839 VBOXSTRICTRC rc2 = EMInterpretInstructionDisasState(pVCpu, pDis, pRegFrame, pvFault, EMCODETYPE_ALL);
886 * @param pDis The disassembly of the write instruction.
891 DECLINLINE(int) pgmPoolAccessHandlerSTOSD(PVM pVM, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,
894 unsigned uIncrement = pDis->Param1.cb;
897 Assert(pDis->uCpuMode == DISCPUMODE_32BIT || pDis->uCpuMode == DISCPUMODE_64BIT);
901 if (pDis->uOpMode == DISCPUMODE_32BIT)
943 pRegFrame->rip += pDis->cbInstr;
958 * @param pDis The disassembly of the write instruction.
964 DECLINLINE(int) pgmPoolAccessHandlerSimple(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,
985 uint32_t cbWrite = DISGetParamSize(pDis, &pDis->Param1);
1002 VBOXSTRICTRC rc = EMInterpretInstructionDisasState(pVCpu, pDis, pRegFrame, pvFault, EMCODETYPE_ALL);
1008 pRegFrame->cs.Sel, (RTGCPTR)pRegFrame->rip, pDis->pCurInstr->uOpcode));
1106 PDISCPUSTATE pDis = &pVCpu->pgm.s.DisState;
1107 int rc = EMInterpretDisasCurrent(pVM, pVCpu, pDis, NULL);
1141 && pvFault == (pPage->GCPtrLastAccessHandlerFault + pDis->Param1.cb)
1167 && !(fReused = pgmPoolMonitorIsReused(pVM, pVCpu, pRegFrame, pDis, pvFault))
1168 && !pgmPoolMonitorIsForking(pPool, pDis, GCPhysFault & PAGE_OFFSET_MASK))
1173 if (!(pDis->fPrefix & (DISPREFIX_REP | DISPREFIX_REPNE)))
1175 rc = pgmPoolAccessHandlerSimple(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault, &fReused);
1184 && pDis->pCurInstr->uOpcode == OP_MOV
1214 if ( pDis->pCurInstr->uOpcode == OP_STOSWD
1216 && pDis->uOpMode == pDis->uCpuMode
1217 && pDis->uAddrMode == pDis->uCpuMode)
1221 if ( pDis->uCpuMode == DISCPUMODE_32BIT
1222 && pDis->fPrefix == DISPREFIX_REP
1233 if ( pDis->uCpuMode == DISCPUMODE_64BIT
1234 && pDis->fPrefix == (DISPREFIX_REP | DISPREFIX_REX)
1246 rc = pgmPoolAccessHandlerSTOSD(pVM, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault);
1256 pRegFrame->eax, pRegFrame->ecx, pRegFrame->edi, pRegFrame->esi, (RTGCPTR)pRegFrame->rip, pDis->pCurInstr->uOpcode, pDis->fPrefix));
1268 || ( !pgmPoolMonitorIsReused(pVM, pVCpu, pRegFrame, pDis, pvFault)
1269 && !pgmPoolMonitorIsForking(pPool, pDis, GCPhysFault & PAGE_OFFSET_MASK))
1343 rc = pgmPoolAccessHandlerFlush(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault);