Changeset 102736 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Dec 31, 2023 1:06:09 AM (15 months ago)
- svn:sync-xref-src-repo-rev:
- 160908
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r102735 r102736 9968 9968 *********************************************************************************************************************************/ 9969 9969 9970 #if (defined(RT_ARCH_AMD64) && 1) || (defined(RT_ARCH_ARM64) && 0)9970 #if (defined(RT_ARCH_AMD64) && 1) || (defined(RT_ARCH_ARM64) && 1) 9971 9971 # define IEMNATIVE_WITH_TLB_LOOKUP 9972 9972 #endif … … 10118 10118 { 10119 10119 off = iemNativeEmitBrkEx(pCodeBuf, off, 1); /** @todo this needs testing */ 10120 /* cmp seglim, regptr */ 10120 /* cmp seglim, regptr */ /** @todo r=bird: why 64-bit compare again? */ 10121 10121 if (pTlbState->idxRegPtr != UINT8_MAX) 10122 10122 off = iemNativeEmitCmpGprWithGprEx(pCodeBuf, off, pTlbState->idxRegSegLimit, pTlbState->idxRegPtr); … … 10136 10136 /* cmp reg1, reg2 (64-bit) / imm (32-bit) */ 10137 10137 if (pTlbState->idxRegPtr != UINT8_MAX) 10138 off = iemNativeEmitCmpGprWithGprEx(pCodeBuf, off, pTlbState->idxReg1, pTlbState->idxReg2); 10138 off = iemNativeEmitCmpGprWithGprEx(pCodeBuf, off, pTlbState->idxReg1, 10139 cbMem > 1 ? pTlbState->idxReg2 : pTlbState->idxRegPtr); 10139 10140 else 10140 10141 off = iemNativeEmitCmpGpr32WithImmEx(pCodeBuf, off, pTlbState->idxReg1, (uint32_t)(pTlbState->uAbsPtr + cbMem - 1)); … … 10150 10151 */ 10151 10152 iemNativeLabelDefine(pReNative, idxLabelTlbLookup, off); 10152 # if defined(RT_ARCH_ARM64) 10153 off = iemNativeEmitBrkEx(pCodeBuf, off, 0); /** @todo debug on arm */10153 # if defined(RT_ARCH_ARM64) && 0 10154 off = iemNativeEmitBrkEx(pCodeBuf, off, 0); 10154 10155 # endif 10155 10156 … … 10397 10398 off = iemNativeEmitAddGprImmEx(pCodeBuf, off, pTlbState->idxReg2, RT_UOFFSETOF(VMCPUCC, iem.s.DataTlb.aEntries), 10398 10399 pTlbState->idxReg3 /*iGprTmp*/); 10399 10400 /* reg2 += pVCpu */ 10401 off = iemNativeEmitAddTwoGprsEx(pCodeBuf, off, pTlbState->idxReg2, IEMNATIVE_REG_FIXED_PVMCPU); 10400 10402 # else 10401 10403 # error "Port me" … … 10411 10413 off = iemNativeEmitGprByGprDisp(pCodeBuf, off, pTlbState->idxReg1, pTlbState->idxReg2, RT_UOFFSETOF(IEMTLBENTRY, uTag)); 10412 10414 # elif defined(RT_ARCH_ARM64) 10413 pCodeBuf[off++] = Armv8A64MkInstrStLdRUOff(kArmv8A64InstrLdStType_Ld_Dword, pTlbState->idxReg3, 10414 pTlbState->idxReg2, RT_UOFFSETOF(IEMTLBENTRY, uTag)); 10415 off = iemNativeEmitLoadGprByGprEx(pCodeBuf, off, pTlbState->idxReg3, pTlbState->idxReg2, RT_UOFFSETOF(IEMTLBENTRY, uTag)); 10415 10416 off = iemNativeEmitCmpGprWithGprEx(pCodeBuf, off, pTlbState->idxReg1, pTlbState->idxReg3); 10416 10417 # else … … 10443 10444 RT_UOFFSETOF(VMCPUCC, iem.s.DataTlb.uTlbPhysRev)); 10444 10445 # elif defined(RT_ARCH_ARM64) 10445 pCodeBuf[off++] = Armv8A64MkInstrStLdRUOff(kArmv8A64InstrLdStType_Ld_Dword, pTlbState->idxReg3,10446 pTlbState->idxReg2,RT_UOFFSETOF(IEMTLBENTRY, fFlagsAndPhysRev));10446 off = iemNativeEmitLoadGprByGprEx(pCodeBuf, off, pTlbState->idxReg3, pTlbState->idxReg2, 10447 RT_UOFFSETOF(IEMTLBENTRY, fFlagsAndPhysRev)); 10447 10448 pCodeBuf[off++] = Armv8A64MkInstrAnd(pTlbState->idxReg1, pTlbState->idxReg1, pTlbState->idxReg3); 10448 off = iemNativeEmitLoadGprFromVCpuU64Ex(pCodeBuf, off, pTlbState->idxReg3, 10449 off = iemNativeEmitLoadGprFromVCpuU64Ex(pCodeBuf, off, pTlbState->idxReg3, RT_UOFFSETOF(VMCPUCC, iem.s.DataTlb.uTlbPhysRev)); 10449 10450 off = iemNativeEmitCmpGprWithGprEx(pCodeBuf, off, pTlbState->idxReg1, pTlbState->idxReg3); 10450 10451 # else
Note:
See TracChangeset
for help on using the changeset viewer.