Changeset 106196 in vbox for trunk/src/VBox
- Timestamp:
- Oct 1, 2024 1:50:48 PM (6 months ago)
- svn:sync-xref-src-repo-rev:
- 164980
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompFuncs.h
r106187 r106196 6058 6058 { 6059 6059 Assert(!(pReNative->fSkippingEFlags & fElfInput)); RT_NOREF(fElfInput); 6060 if (pReNative->fSkippingEFlags) 6061 Log5(("EFLAGS: fSkippingEFlags %#x -> %#x (iemNativeEmitCommitEFlags)\n", 6062 pReNative->fSkippingEFlags, pReNative->fSkippingEFlags & ~(a_fEflOutput & X86_EFL_STATUS_BITS) )); 6060 6063 if RT_CONSTEXPR_IF((a_fEflOutput & X86_EFL_STATUS_BITS) == X86_EFL_STATUS_BITS) 6061 6064 pReNative->fSkippingEFlags = 0; … … 6121 6124 /* Free but don't flush the EFLAGS register. */ 6122 6125 iemNativeRegFreeTmp(pReNative, idxEflReg); 6126 6127 #ifdef IEMNATIVE_WITH_EFLAGS_SKIPPING 6128 /* Clear the bit in the skipped mask if we're clobbering and it's a status bit. */ 6129 if RT_CONSTEXPR_IF( (a_enmOp == kIemNativeEmitEflOp_Set || a_enmOp == kIemNativeEmitEflOp_Clear) 6130 && (a_fEflBit & X86_EFL_STATUS_BITS)) 6131 { 6132 if (pReNative->fSkippingEFlags) 6133 Log5(("EFLAGS: fSkippingEFlags %#x -> %#x (iemNativeEmitModifyEFlagsBit)\n", 6134 pReNative->fSkippingEFlags, pReNative->fSkippingEFlags & ~a_fEflBit )); 6135 pReNative->fSkippingEFlags &= ~a_fEflBit; 6136 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING 6137 off = iemNativeEmitAndImmIntoVCpuU32(pReNative, off, ~a_fEflBit, RT_UOFFSETOF(VMCPU, iem.s.fSkippingEFlags)); 6138 # endif 6139 } 6140 #endif 6123 6141 6124 6142 return off; … … 6269 6287 IEMNATIVE_ASSERT_EFLAGS_SKIPPING_AND_POSTPONING(pReNative, fEflInput); 6270 6288 IEMNATIVE_STRICT_EFLAGS_SKIPPING_EMIT_CHECK(pReNative, off, fEflInput); 6289 if (pReNative->fSkippingEFlags) 6290 Log5(("EFLAGS: fSkippingEFlags %#x -> %#x (iemNativeEmitRefEFlags)\n", 6291 pReNative->fSkippingEFlags, pReNative->fSkippingEFlags & ~a_fEflOutput )); 6271 6292 pReNative->fSkippingEFlags &= ~a_fEflOutput; 6272 6293 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING -
trunk/src/VBox/VMM/VMMAll/target-x86/IEMAllN8veEmit-x86.h
r106192 r106196 237 237 else 238 238 { 239 Log5((" iemNativeClearPostponedEFlags: Clobbering %#x: %#x -> %#x (op=%d bits=%u)\n", a_fEflClobbered,239 Log5(("EFLAGS: Clobbering %#x: %#x -> %#x (op=%d bits=%u) - iemNativeClearPostponedEFlags\n", a_fEflClobbered, 240 240 pReNative->PostponedEfl.fEFlags, fEFlags, pReNative->PostponedEfl.enmOp, pReNative->PostponedEfl.cOpBits)); 241 241 pReNative->PostponedEfl.fEFlags = fEFlags; … … 245 245 246 246 /* Do cleanup. */ 247 Log5((" iemNativeClearPostponedEFlags: Cleanup of op=%u bits=%u efl=%#x upon clobbering %#x\n",247 Log5(("EFLAGS: Cleanup of op=%u bits=%u efl=%#x upon clobbering %#x - iemNativeClearPostponedEFlags\n", 248 248 pReNative->PostponedEfl.enmOp, pReNative->PostponedEfl.cOpBits, pReNative->PostponedEfl.fEFlags, a_fEflClobbered)); 249 249 pReNative->PostponedEfl.fEFlags = 0; … … 548 548 { 549 549 STAM_COUNTER_INC(&pReNative->pVCpu->iem.s.StatNativeEflSkippedLogical); 550 pReNative->fSkippingEFlags |= X86_EFL_STATUS_BITS;550 pReNative->fSkippingEFlags = X86_EFL_STATUS_BITS; 551 551 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING 552 552 off = iemNativeEmitOrImmIntoVCpuU32(pReNative, off, X86_EFL_STATUS_BITS, RT_UOFFSETOF(VMCPU, iem.s.fSkippingEFlags)); 553 553 # endif 554 Log5((" iemNativeEmitEFlagsForLogical: Skipping %#x\n", X86_EFL_STATUS_BITS));554 Log5(("EFLAGS: Skipping %#x - iemNativeEmitEFlagsForLogical\n", X86_EFL_STATUS_BITS)); 555 555 return off; 556 556 } … … 570 570 * doesn't modify it. That'll save a register move and allocation. */ 571 571 off = iemNativeEmitLoadGprFromGpr(pReNative, off, pReNative->PostponedEfl.idxReg1, idxRegResult); 572 Log5((" iemNativeEmitEFlagsForLogical: Postponing %#x op=%u bits=%u reg1=%u\n", X86_EFL_STATUS_BITS,572 Log5(("EFLAGS: Postponing %#x op=%u bits=%u reg1=%u - iemNativeEmitEFlagsForLogical\n", X86_EFL_STATUS_BITS, 573 573 kIemNativePostponedEflOp_Logical, cOpBits, pReNative->PostponedEfl.idxReg1)); 574 574 } … … 645 645 646 646 #ifdef IEMNATIVE_WITH_EFLAGS_SKIPPING 647 if (pReNative->fSkippingEFlags) 648 Log5(("EFLAGS: fSkippingEFlags %#x -> 0 (iemNativeEmitEFlagsForLogical)\n", pReNative->fSkippingEFlags)); 647 649 pReNative->fSkippingEFlags = 0; 648 650 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING … … 679 681 { 680 682 STAM_COUNTER_INC(&pReNative->pVCpu->iem.s.StatNativeEflSkippedArithmetic); 681 pReNative->fSkippingEFlags |= X86_EFL_STATUS_BITS; 683 pReNative->fSkippingEFlags = X86_EFL_STATUS_BITS; 684 Log5(("EFLAGS: Skipping %#x - iemNativeEmitEFlagsForArithmetic\n", X86_EFL_STATUS_BITS)); 682 685 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING 683 686 off = iemNativeEmitOrImmIntoVCpuU32(pReNative, off, X86_EFL_STATUS_BITS, RT_UOFFSETOF(VMCPU, iem.s.fSkippingEFlags)); … … 687 690 #endif 688 691 { 689 #ifdef IEMNATIVE_WITH_EFLAGS_SKIPPING690 uint32_t fSkipped = 0;691 #endif692 692 #ifdef RT_ARCH_AMD64 693 693 /* … … 845 845 846 846 #ifdef IEMNATIVE_WITH_EFLAGS_SKIPPING 847 pReNative->fSkippingEFlags = fSkipped; 847 if (pReNative->fSkippingEFlags) 848 Log5(("EFLAGS: fSkippingEFlags %#x -> 0 (iemNativeEmitEFlagsForArithmetic)\n", pReNative->fSkippingEFlags)); 849 pReNative->fSkippingEFlags = 0; 848 850 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING 849 off = iemNativeEmitStoreImmToVCpuU32(pReNative, off, fSkipped, RT_UOFFSETOF(VMCPU, iem.s.fSkippingEFlags));851 off = iemNativeEmitStoreImmToVCpuU32(pReNative, off, 0, RT_UOFFSETOF(VMCPU, iem.s.fSkippingEFlags)); 850 852 # endif 851 853 #endif … … 2106 2108 2107 2109 #ifdef IEMNATIVE_WITH_EFLAGS_SKIPPING 2110 if (pReNative->fSkippingEFlags) 2111 Log5(("EFLAGS: fSkippingEFlags %#x -> 0 (iemNativeEmitEFlagsForShift)\n", pReNative->fSkippingEFlags)); 2108 2112 pReNative->fSkippingEFlags = 0; 2109 2113 # ifdef IEMNATIVE_STRICT_EFLAGS_SKIPPING
Note:
See TracChangeset
for help on using the changeset viewer.