Changeset 101538 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Oct 21, 2023 10:30:50 PM (17 months ago)
- svn:sync-xref-src-repo-rev:
- 159615
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r101537 r101538 2889 2889 'IEM_MC_IF_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True, False, ), 2890 2890 'IEM_MC_IF_EFL_BIT_NOT_SET_AND_BITS_EQ': (McBlock.parseMcGenericCond, True, False, ), 2891 'IEM_MC_IF_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), #True, ),2891 'IEM_MC_IF_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), #True, ), 2892 2892 'IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE': (McBlock.parseMcGenericCond, True, False, ), 2893 2893 'IEM_MC_IF_EFL_BITS_EQ': (McBlock.parseMcGenericCond, True, False, ), -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r101537 r101538 3781 3781 /* Truncate the result to 16-bit IP if the operand size is 16-bit. */ 3782 3782 if (enmEffOpSize == IEMMODE_16BIT) 3783 {3784 Assert(enmEffOpSize == IEMMODE_16BIT);3785 3783 off = iemNativeEmitClear16UpGpr(pReNative, off, idxPcReg); 3786 }3787 3784 3788 3785 /* Perform limit checking, potentially raising #GP(0) and exit the TB. */ -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdRecompiler.cpp
r101484 r101538 888 888 pTb->Gen.uData = 0; 889 889 pTb->cbOpcodes = 0; 890 pTb->cbOpcodesAllocated = 0;891 890 pTb->pabOpcodes = NULL; 892 891 … … 1202 1201 if (pTb->pabOpcodes) 1203 1202 { 1203 pVCpu->iem.s.cbOpcodesAllocated = cCalls * 16; 1204 1204 pTb->Thrd.cAllocated = cCalls; 1205 pTb->cbOpcodesAllocated = cCalls * 16;1206 1205 pTb->Thrd.cCalls = 0; 1207 1206 pTb->cbOpcodes = 0; … … 1299 1298 { 1300 1299 pTb->Thrd.cAllocated = cCalls; 1301 pTb->cbOpcodesAllocated = cbOpcodes;1302 1300 pTb->pNext = NULL; 1303 1301 pTb->cUsed = 0; … … 1947 1945 pTb->cbOpcodes = offOpcode + cbInstr; 1948 1946 pTb->aRanges[idxRange].cbOpcodes += cbInstr; 1949 Assert(pTb->cbOpcodes <= p Tb->cbOpcodesAllocated);1947 Assert(pTb->cbOpcodes <= pVCpu->iem.s.cbOpcodesAllocated); 1950 1948 } 1951 1949 … … 1967 1965 iemThreadedCopyOpcodeBytesInline(pVCpu, &pTb->pabOpcodes[offOpcode], cbInstr); 1968 1966 pTb->cbOpcodes = offOpcode + cbInstr; 1969 Assert(pTb->cbOpcodes <= p Tb->cbOpcodesAllocated);1967 Assert(pTb->cbOpcodes <= pVCpu->iem.s.cbOpcodesAllocated); 1970 1968 1971 1969 return true; … … 2196 2194 /* Still space in the TB? */ 2197 2195 if ( pTb->Thrd.cCalls + 5 < pTb->Thrd.cAllocated 2198 && pTb->cbOpcodes + 16 <= p Tb->cbOpcodesAllocated)2196 && pTb->cbOpcodes + 16 <= pVCpu->iem.s.cbOpcodesAllocated) 2199 2197 iemThreadedCompileInitDecoder(pVCpu, true /*fReInit*/, 0); 2200 2198 else -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdTables.h
r101387 r101538 208 208 pTb->cbOpcodes = offOpcodeMc2 + pVCpu->iem.s.offOpcode; \ 209 209 pTb->aRanges[idxRangeMc2].cbOpcodes += cbInstrMc2; \ 210 Assert(pTb->cbOpcodes <= p Tb->cbOpcodesAllocated); \210 Assert(pTb->cbOpcodes <= pVCpu->iem.s.cbOpcodesAllocated); \ 211 211 } \ 212 212 else if (iemThreadedCompileBeginEmitCallsComplications(pVCpu, pTb)) \ -
trunk/src/VBox/VMM/include/IEMInternal.h
r101484 r101538 887 887 /** The IEMCPU::msRecompilerPollNow last time it was used. */ 888 888 uint32_t msLastUsed; 889 /** The allocation chunk this TB belongs to. */890 uint8_t idxAllocChunk;891 892 uint8_t abUnused[3];893 uint32_t uUnused;894 895 889 896 890 /** @name What uniquely identifies the block. … … 941 935 }; 942 936 943 /** Number of bytes of opcodes stored in pabOpcodes. */ 937 /** The allocation chunk this TB belongs to. */ 938 uint8_t idxAllocChunk; 939 uint8_t bUnused; 940 941 /** Number of bytes of opcodes stored in pabOpcodes. 942 * @todo this field isn't really needed, aRanges keeps the actual info. */ 944 943 uint16_t cbOpcodes; 945 /** The max storage available in the pabOpcodes block. */946 uint16_t cbOpcodesAllocated;947 944 /** Pointer to the opcode bytes this block was recompiled from. */ 948 945 uint8_t *pabOpcodes; 946 947 /** Debug info or smth. */ 948 void *pvDbg; 949 949 950 950 /* --- 64 byte cache line end --- */ … … 981 981 * The GCPhysPc w/o page offset is element zero, so starting here with 1. */ 982 982 RTGCPHYS aGCPhysPages[2]; 983 983 984 } IEMTB; 984 985 #pragma pack() 985 AssertCompileMemberOffset(IEMTB, x86, 36); 986 AssertCompileMemberOffset(IEMTB, cRanges, 38); 987 AssertCompileMemberOffset(IEMTB, Thrd, 40); 988 AssertCompileMemberOffset(IEMTB, Thrd.cCalls, 48); 989 AssertCompileMemberOffset(IEMTB, cbOpcodes, 52); 986 AssertCompileMemberAlignment(IEMTB, GCPhysPc, sizeof(RTGCPHYS)); 987 AssertCompileMemberAlignment(IEMTB, Thrd, sizeof(void *)); 988 AssertCompileMemberAlignment(IEMTB, pabOpcodes, sizeof(void *)); 989 AssertCompileMemberAlignment(IEMTB, pvDbg, sizeof(void *)); 990 AssertCompileMemberAlignment(IEMTB, aGCPhysPages, sizeof(RTGCPHYS)); 991 AssertCompileMemberOffset(IEMTB, aRanges[0], 64); 990 992 AssertCompileMemberSize(IEMTB, aRanges[0], 6); 991 993 #if 1 … … 1503 1505 * iemCImpl_sti code and subsequently cleared by the recompiler. */ 1504 1506 bool fTbCurInstrIsSti; 1507 /** The size of the IEMTB::pabOpcodes allocation in pThrdCompileTbR3. */ 1508 uint16_t cbOpcodesAllocated; 1505 1509 /** Spaced reserved for recompiler data / alignment. */ 1506 bool afRecompilerStuff1[ 2+4];1510 bool afRecompilerStuff1[4]; 1507 1511 /** The virtual sync time at the last timer poll call. */ 1508 1512 uint32_t msRecompilerPollNow;
Note:
See TracChangeset
for help on using the changeset viewer.