Changeset 105125 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Jul 3, 2024 8:07:48 PM (5 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInline.h
r105072 r105125 2098 2098 * Stacks} 2099 2099 */ 2100 template<uint32_t const a_fTF = X86_EFL_TF> 2100 2101 static VBOXSTRICTRC iemFinishInstructionWithFlagsSet(PVMCPUCC pVCpu, int rcNormal) RT_NOEXCEPT 2101 2102 { … … 2103 2104 * Normally we're just here to clear RF and/or interrupt shadow bits. 2104 2105 */ 2105 if (RT_LIKELY((pVCpu->cpum.GstCtx.eflags.uBoth & ( X86_EFL_TF | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) == 0))2106 if (RT_LIKELY((pVCpu->cpum.GstCtx.eflags.uBoth & (a_fTF | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) == 0)) 2106 2107 pVCpu->cpum.GstCtx.eflags.uBoth &= ~(X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW); 2107 2108 else … … 2111 2112 */ 2112 2113 VBOXSTRICTRC rcStrict; 2113 if (pVCpu->cpum.GstCtx.eflags.uBoth & ( X86_EFL_TF | CPUMCTX_DBG_HIT_DRX_MASK))2114 if (pVCpu->cpum.GstCtx.eflags.uBoth & (a_fTF | CPUMCTX_DBG_HIT_DRX_MASK)) 2114 2115 { 2115 2116 IEM_CTX_IMPORT_RET(pVCpu, CPUMCTX_EXTRN_DR6); 2116 2117 pVCpu->cpum.GstCtx.dr[6] &= ~X86_DR6_B_MASK; 2117 if (pVCpu->cpum.GstCtx.eflags.uBoth & X86_EFL_TF)2118 if (pVCpu->cpum.GstCtx.eflags.uBoth & a_fTF) 2118 2119 pVCpu->cpum.GstCtx.dr[6] |= X86_DR6_BS; 2119 2120 pVCpu->cpum.GstCtx.dr[6] |= (pVCpu->cpum.GstCtx.eflags.uBoth & CPUMCTX_DBG_HIT_DRX_MASK_NONSILENT) … … 2862 2863 iemRegAddToRip(pVCpu, cbInstr); 2863 2864 if (!(fEflOld & X86_EFL_TF)) 2864 return iemRegFinishClearingRF(pVCpu, VINF_SUCCESS); 2865 { 2866 /* Specialized iemRegFinishClearingRF edition here that doesn't check X86_EFL_TF. */ 2867 AssertCompile(CPUMCTX_INHIBIT_SHADOW < UINT32_MAX); 2868 if (RT_LIKELY(!( pVCpu->cpum.GstCtx.eflags.uBoth 2869 & (X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) )) 2870 return VINF_SUCCESS; 2871 return iemFinishInstructionWithFlagsSet<0 /*a_fTF*/>(pVCpu, VINF_SUCCESS); /* TF=0, so ignore it. */ 2872 } 2865 2873 return iemFinishInstructionWithTfSet(pVCpu); 2866 2874 }
Note:
See TracChangeset
for help on using the changeset viewer.