Changeset 104034 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Mar 25, 2024 10:07:26 AM (11 months ago)
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInternal.h
r104019 r104034 1050 1050 /* kIemTbDbgEntryType_GuestRegShadowing. */ 1051 1051 uint32_t uType : 4; 1052 uint32_t uUnused : 4; 1052 /** Flag whether the register is marked as dirty. */ 1053 uint32_t fDirty : 1; 1054 uint32_t uUnused : 3; 1053 1055 /** The guest register being shadowed (IEMNATIVEGSTREG). */ 1054 1056 uint32_t idxGstReg : 8; -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r104021 r104034 70 70 #endif 71 71 72 /** @def IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 73 * Delay the writeback or dirty registers as long as possible. */ 74 #ifdef DEBUG_aeichner 75 # define IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 76 #endif 72 77 73 78 /** @name Stack Frame Layout … … 1137 1142 /** Bitmap marking valid entries in aidxGstRegShadows. */ 1138 1143 uint64_t bmGstRegShadows; 1144 #ifdef IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 1145 /** Bitmap marking the shadowed guest register as dirty and needing writeback when flushing. */ 1146 uint64_t bmGstRegShadowDirty; 1147 #endif 1139 1148 1140 1149 #ifdef IEMNATIVE_WITH_SIMD_REG_ALLOCATOR … … 1548 1557 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 1549 1558 DECL_HIDDEN_THROW(uint32_t) iemNativeEmitPcWritebackSlow(PIEMRECOMPILERSTATE pReNative, uint32_t off); 1559 #endif 1560 #ifdef IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 1561 DECL_HIDDEN_THROW(uint32_t) iemNativeRegFlushPendingWrite(PIEMRECOMPILERSTATE pReNative, uint32_t off, IEMNATIVEGSTREG enmGstReg); 1562 DECL_HIDDEN_THROW(uint32_t) iemNativeRegFlushDirtyGuest(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint64_t fFlushGstReg = UINT64_MAX); 1563 DECL_HIDDEN_THROW(uint32_t) iemNativeRegFlushDirtyGuestByHostRegShadow(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxHstReg); 1550 1564 #endif 1551 1565 … … 2110 2124 Assert( RT_BOOL(pReNative->Core.bmHstRegsWithGstShadow & RT_BIT_32(idxHstReg)) 2111 2125 == RT_BOOL(pReNative->Core.aHstRegs[idxHstReg].fGstRegShadows)); 2126 #ifdef IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 2127 Assert(!(pReNative->Core.aHstRegs[idxHstReg].fGstRegShadows & pReNative->Core.bmGstRegShadowDirty)); 2128 #endif 2112 2129 2113 2130 #ifdef IEMNATIVE_WITH_TB_DEBUG_INFO … … 2148 2165 Assert(pReNative->Core.aHstRegs[idxHstReg].fGstRegShadows & RT_BIT_64(enmGstReg)); 2149 2166 Assert(pReNative->Core.bmHstRegsWithGstShadow & RT_BIT_32(idxHstReg)); 2167 #ifdef IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK 2168 Assert(!(pReNative->Core.aHstRegs[idxHstReg].fGstRegShadows & pReNative->Core.bmGstRegShadowDirty)); 2169 #endif 2150 2170 2151 2171 #ifdef IEMNATIVE_WITH_TB_DEBUG_INFO … … 2264 2284 #endif 2265 2285 2266 #if def IEMNATIVE_WITH_SIMD_REG_ALLOCATOR2286 #if defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR) || defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) 2267 2287 /** @todo r=bird: There must be a quicker way to check if anything needs doing here! */ 2268 2288 /** @todo This doesn't mix well with fGstShwExcept but we ignore this for now and just flush everything. */
Note:
See TracChangeset
for help on using the changeset viewer.