Changeset 103649 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Mar 3, 2024 7:11:39 AM (13 months ago)
- svn:sync-xref-src-repo-rev:
- 162009
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInternal.h
r103592 r103649 84 84 || defined(DOXYGEN_RUNNING) 85 85 # define IEM_WITH_THROW_CATCH 86 #endif 87 88 /** @def IEMNATIVE_WITH_DELAYED_PC_UPDATING 89 * Enables the delayed PC updating optimization (see @bugref{10373}). 90 */ 91 #if defined(DOXYGEN_RUNNING) || 1 92 # define IEMNATIVE_WITH_DELAYED_PC_UPDATING 86 93 #endif 87 94 … … 957 964 /** Info about a host register shadowing a guest register. */ 958 965 kIemTbDbgEntryType_GuestRegShadowing, 966 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 967 /** Info about a delayed RIP update. */ 968 kIemTbDbgEntryType_DelayedPcUpdate, 969 #endif 959 970 kIemTbDbgEntryType_End 960 971 } IEMTBDBGENTRYTYPE; … … 1028 1039 uint32_t idxHstRegPrev : 8; 1029 1040 } GuestRegShadowing; 1041 1042 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 1043 struct 1044 { 1045 /* kIemTbDbgEntryType_DelayedPcUpdate. */ 1046 uint32_t uType : 4; 1047 /* The instruction offset added to the program counter. */ 1048 uint32_t offPc : 14; 1049 /** Number of instructions skipped. */ 1050 uint32_t cInstrSkipped : 14; 1051 } DelayedPcUpdate; 1052 #endif 1053 1030 1054 } IEMTBDBGENTRY; 1031 1055 AssertCompileSize(IEMTBDBGENTRY, sizeof(uint32_t)); … … 1843 1867 STAMCOUNTER StatNativeLivenessEflOfDelayable; 1844 1868 1845 uint64_t au64Padding[3]; 1869 /** Native recompiler: Number of potential PC updates in total. */ 1870 STAMCOUNTER StatNativePcUpdateTotal; 1871 /** Native recompiler: Number of PC updates which could be delayed. */ 1872 STAMCOUNTER StatNativePcUpdateDelayed; 1873 1874 1875 uint64_t u64Padding; 1846 1876 /** @} */ 1847 1877 … … 3644 3674 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsrlq_imm_u128, iemAImpl_vpsrlq_imm_u128_fallback; 3645 3675 FNIEMAIMPLMEDIAPSHUFU256 iemAImpl_vpsrlq_imm_u256, iemAImpl_vpsrlq_imm_u256_fallback; 3676 FNIEMAIMPLMEDIAPSHUFU128 iemAImpl_vpsrldq_imm_u128, iemAImpl_vpsrldq_imm_u128_fallback; 3677 FNIEMAIMPLMEDIAPSHUFU256 iemAImpl_vpsrldq_imm_u256, iemAImpl_vpsrldq_imm_u256_fallback; 3646 3678 3647 3679 FNIEMAIMPLMEDIAOPTF3U128 iemAImpl_vpermilps_u128, iemAImpl_vpermilps_u128_fallback; -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r103622 r103649 169 169 # define IEMNATIVE_REG_FIXED_PCPUMCTX ARMV8_A64_REG_X27 170 170 # define IEMNATIVE_REG_FIXED_TMP0 ARMV8_A64_REG_X15 171 # if defined(IEMNATIVE_WITH_DELAYED_PC_UPDATING) && 0 /* debug the updating with a shadow RIP. */ 172 # define IEMNATIVE_REG_FIXED_TMP1 ARMV8_A64_REG_X16 173 # define IEMNATIVE_REG_FIXED_PC_DBG ARMV8_A64_REG_X26 174 # define IEMNATIVE_REG_FIXED_MASK_ADD ( RT_BIT_32(IEMNATIVE_REG_FIXED_TMP1) \ 175 | RT_BIT_32(IEMNATIVE_REG_FIXED_PC_DBG)) 176 # else 177 # define IEMNATIVE_REG_FIXED_MASK_ADD 0 178 # endif 171 179 # define IEMNATIVE_REG_FIXED_MASK ( RT_BIT_32(ARMV8_A64_REG_SP) \ 172 180 | RT_BIT_32(ARMV8_A64_REG_LR) \ … … 175 183 | RT_BIT_32(IEMNATIVE_REG_FIXED_PCPUMCTX) \ 176 184 | RT_BIT_32(ARMV8_A64_REG_X18) \ 177 | RT_BIT_32(IEMNATIVE_REG_FIXED_TMP0) ) 185 | RT_BIT_32(IEMNATIVE_REG_FIXED_TMP0) \ 186 | IEMNATIVE_REG_FIXED_MASK_ADD) 178 187 179 188 #else … … 851 860 /** Fixed temporary register. */ 852 861 kIemNativeWhat_FixedTmp, 862 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 863 /** Shadow RIP for the delayed RIP updating debugging. */ 864 kIemNativeWhat_PcShadow, 865 #endif 853 866 /** Register reserved by the CPU or OS architecture. */ 854 867 kIemNativeWhat_FixedReserved, … … 899 912 typedef struct IEMNATIVECORESTATE 900 913 { 914 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 915 /** The current instruction offset in bytes from when the guest program counter 916 * was updated last. Used for delaying the write to the guest context program counter 917 * as long as possible. */ 918 uint32_t offPc; 919 /** Number of instructions where we could skip the updating. */ 920 uint32_t cInstrPcUpdateSkipped; 921 #endif 901 922 /** Allocation bitmap for aHstRegs. */ 902 923 uint32_t bmHstRegs;
Note:
See TracChangeset
for help on using the changeset viewer.