Changeset 92745 in vbox for trunk/src/VBox
- Timestamp:
- Dec 3, 2021 8:38:46 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 148656
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/DBGFAllBp.cpp
r89924 r92745 530 530 * @param pRegFrame Pointer to the register frame for the trap. 531 531 */ 532 VMM_INT_DECL( int) DBGFTrap03Handler(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame)532 VMM_INT_DECL(VBOXSTRICTRC) DBGFTrap03Handler(PVMCC pVM, PVMCPUCC pVCpu, PCPUMCTXCORE pRegFrame) 533 533 { 534 534 #if defined(IN_RING0) … … 552 552 553 553 LogFlowFunc(("GCPtrBp=%RGv idxL1=%u u32L1Entry=%#x\n", GCPtrBp, idxL1, u32L1Entry)); 554 rc = VINF_EM_RAW_GUEST_TRAP;555 554 if (u32L1Entry != DBGF_BP_INT3_L1_ENTRY_TYPE_NULL) 556 555 { … … 576 575 rc = dbgfBpHit(pVM, pVCpu, pRegFrame, hBp, pBp, pBpR0); 577 576 #endif 578 /* else: Genuine guest trap. */ 577 else 578 rc = VINF_EM_RAW_GUEST_TRAP; /* Genuine guest trap. */ 579 579 } 580 580 else /* Invalid breakpoint handle or not an int3 breakpoint. */ … … 587 587 rc = VERR_DBGF_BP_L1_LOOKUP_FAILED; 588 588 } 589 /* else: Genuine guest trap. */ 589 else 590 rc = VINF_EM_RAW_GUEST_TRAP; /* Genuine guest trap. */ 590 591 591 592 return rc; -
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r92626 r92745 2831 2831 { 2832 2832 Assert(pVCpu->iem.s.cXcptRecursions == 0); 2833 2834 /* 2835 * We must check if this INT3 might belong to DBGF before raising a #BP. 2836 */ 2837 if (u8Int == 3) 2838 { 2839 PVMCC pVM = pVCpu->CTX_SUFF(pVM); 2840 if (pVM->dbgf.ro.cEnabledInt3Breakpoints == 0) 2841 { /* likely: No vbox debugger breakpoints */ } 2842 else 2843 { 2844 VBOXSTRICTRC rcStrict = DBGFTrap03Handler(pVM, pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx)); 2845 Log(("iemCImpl_int: DBGFTrap03Handler -> %Rrc\n", VBOXSTRICTRC_VAL(rcStrict) )); 2846 if (rcStrict != VINF_EM_RAW_GUEST_TRAP) 2847 return iemSetPassUpStatus(pVCpu, rcStrict); 2848 } 2849 } 2833 2850 return iemRaiseXcptOrInt(pVCpu, 2834 2851 cbInstr, -
trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h
r92626 r92745 10652 10652 AssertRCReturn(rc, rc); 10653 10653 10654 VBOXSTRICTRC rcStrict; 10654 10655 if (!pVmxTransient->fIsNestedGuest) 10655 rc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx));10656 rcStrict = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx)); 10656 10657 else 10657 rc = VINF_EM_RAW_GUEST_TRAP;10658 10659 if (rc == VINF_EM_RAW_GUEST_TRAP)10658 rcStrict = VINF_EM_RAW_GUEST_TRAP; 10659 10660 if (rcStrict == VINF_EM_RAW_GUEST_TRAP) 10660 10661 { 10661 10662 vmxHCSetPendingEvent(pVCpu, VMX_ENTRY_INT_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntInfo), 10662 10663 pVmxTransient->cbExitInstr, pVmxTransient->uExitIntErrorCode, 0 /* GCPtrFaultAddress */); 10663 rc = VINF_SUCCESS;10664 } 10665 10666 Assert(rc == VINF_SUCCESS || rc== VINF_EM_DBG_BREAKPOINT);10667 return rc ;10664 rcStrict = VINF_SUCCESS; 10665 } 10666 10667 Assert(rcStrict == VINF_SUCCESS || rcStrict == VINF_EM_DBG_BREAKPOINT); 10668 return rcStrict; 10668 10669 } 10669 10670 -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r92626 r92745 7511 7511 7512 7512 PCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 7513 intrc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));7513 VBOXSTRICTRC rc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx)); 7514 7514 if (rc == VINF_EM_RAW_GUEST_TRAP) 7515 7515 { -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r92626 r92745 14105 14105 AssertRCReturn(rc, rc); 14106 14106 14107 VBOXSTRICTRC rcStrict; 14107 14108 if (!pVmxTransient->fIsNestedGuest) 14108 rc = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx));14109 rcStrict = DBGFTrap03Handler(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(&pVCpu->cpum.GstCtx)); 14109 14110 else 14110 rc = VINF_EM_RAW_GUEST_TRAP;14111 14112 if (rc == VINF_EM_RAW_GUEST_TRAP)14111 rcStrict = VINF_EM_RAW_GUEST_TRAP; 14112 14113 if (rcStrict == VINF_EM_RAW_GUEST_TRAP) 14113 14114 { 14114 14115 hmR0VmxSetPendingEvent(pVCpu, VMX_ENTRY_INT_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntInfo), 14115 14116 pVmxTransient->cbExitInstr, pVmxTransient->uExitIntErrorCode, 0 /* GCPtrFaultAddress */); 14116 rc = VINF_SUCCESS;14117 } 14118 14119 Assert(rc == VINF_SUCCESS || rc== VINF_EM_DBG_BREAKPOINT);14120 return rc ;14117 rcStrict = VINF_SUCCESS; 14118 } 14119 14120 Assert(rcStrict == VINF_SUCCESS || rcStrict == VINF_EM_DBG_BREAKPOINT); 14121 return rcStrict; 14121 14122 } 14122 14123
Note:
See TracChangeset
for help on using the changeset viewer.