Changeset 101305 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 29, 2023 1:18:28 AM (15 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r101304 r101305 1922 1922 return iemNativeEmitCImplCall3(pReNative, off, pCallEntry->idxInstr, (uintptr_t)a_pfnCImpl, a_cbInstr, a0, a1, a2) 1923 1923 1924 /* 1925 * Builtin functions. 1926 */ 1927 1928 /** 1929 * Built-in function that calls a C-implemention function taking zero arguments. 1930 */ 1931 static IEM_DECL_IEMNATIVERECOMPFUNC_DEF(iemNativeRecompFunc_BltIn_DeferToCImpl0) 1932 { 1933 PFNIEMCIMPL0 const pfnCImpl = (PFNIEMCIMPL0)(uintptr_t)pCallEntry->auParams[0]; 1934 uint8_t const cbInstr = (uint8_t)pCallEntry->auParams[1]; 1935 return iemNativeEmitCImplCall(pReNative, off, pCallEntry->idxInstr, (uintptr_t)pfnCImpl, cbInstr, 0, 0, 0, 0); 1936 } 1937 1924 1938 1925 1939 -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py
r101275 r101305 1602 1602 ]; 1603 1603 1604 ## List of built-in threaded functions with user argument counts. 1604 ## List of built-in threaded functions with user argument counts and 1605 ## whether it has a native recompiler implementation. 1605 1606 katBltIns = ( 1606 ( 'DeferToCImpl0', 2 ),1607 ( 'CheckIrq', 0 ),1608 ( 'CheckMode', 1 ),1609 ( 'CheckHwInstrBps', 0 ),1610 ( 'CheckCsLim', 1 ),1611 1612 ( 'CheckCsLimAndOpcodes', 3 ),1613 ( 'CheckOpcodes', 3 ),1614 ( 'CheckOpcodesConsiderCsLim', 3 ),1615 1616 ( 'CheckCsLimAndPcAndOpcodes', 3 ),1617 ( 'CheckPcAndOpcodes', 3 ),1618 ( 'CheckPcAndOpcodesConsiderCsLim', 3 ),1619 1620 ( 'CheckCsLimAndOpcodesAcrossPageLoadingTlb', 3 ),1621 ( 'CheckOpcodesAcrossPageLoadingTlb', 3 ),1622 ( 'CheckOpcodesAcrossPageLoadingTlbConsiderCsLim', 2 ),1623 1624 ( 'CheckCsLimAndOpcodesLoadingTlb', 3 ),1625 ( 'CheckOpcodesLoadingTlb', 3 ),1626 ( 'CheckOpcodesLoadingTlbConsiderCsLim', 3 ),1627 1628 ( 'CheckCsLimAndOpcodesOnNextPageLoadingTlb', 2 ),1629 ( 'CheckOpcodesOnNextPageLoadingTlb', 2 ),1630 ( 'CheckOpcodesOnNextPageLoadingTlbConsiderCsLim', 2 ),1631 1632 ( 'CheckCsLimAndOpcodesOnNewPageLoadingTlb', 2 ),1633 ( 'CheckOpcodesOnNewPageLoadingTlb', 2 ),1634 ( 'CheckOpcodesOnNewPageLoadingTlbConsiderCsLim', 2 ),1607 ( 'DeferToCImpl0', 2, True ), 1608 ( 'CheckIrq', 0, False ), 1609 ( 'CheckMode', 1, False ), 1610 ( 'CheckHwInstrBps', 0, False ), 1611 ( 'CheckCsLim', 1, False ), 1612 1613 ( 'CheckCsLimAndOpcodes', 3, False ), 1614 ( 'CheckOpcodes', 3, False ), 1615 ( 'CheckOpcodesConsiderCsLim', 3, False ), 1616 1617 ( 'CheckCsLimAndPcAndOpcodes', 3, False ), 1618 ( 'CheckPcAndOpcodes', 3, False ), 1619 ( 'CheckPcAndOpcodesConsiderCsLim', 3, False ), 1620 1621 ( 'CheckCsLimAndOpcodesAcrossPageLoadingTlb', 3, False ), 1622 ( 'CheckOpcodesAcrossPageLoadingTlb', 3, False ), 1623 ( 'CheckOpcodesAcrossPageLoadingTlbConsiderCsLim', 2, False ), 1624 1625 ( 'CheckCsLimAndOpcodesLoadingTlb', 3, False ), 1626 ( 'CheckOpcodesLoadingTlb', 3, False ), 1627 ( 'CheckOpcodesLoadingTlbConsiderCsLim', 3, False ), 1628 1629 ( 'CheckCsLimAndOpcodesOnNextPageLoadingTlb', 2, False ), 1630 ( 'CheckOpcodesOnNextPageLoadingTlb', 2, False ), 1631 ( 'CheckOpcodesOnNextPageLoadingTlbConsiderCsLim', 2, False ), 1632 1633 ( 'CheckCsLimAndOpcodesOnNewPageLoadingTlb', 2, False ), 1634 ( 'CheckOpcodesOnNewPageLoadingTlb', 2, False ), 1635 ( 'CheckOpcodesOnNewPageLoadingTlbConsiderCsLim', 2, False ), 1635 1636 ); 1636 1637 … … 1653 1654 ' */', 1654 1655 ]; 1655 asLines += [' kIemThreadedFunc_BltIn_%s,' % (sFuncNm,) for sFuncNm, _ in self.katBltIns];1656 asLines += [' kIemThreadedFunc_BltIn_%s,' % (sFuncNm,) for sFuncNm, _, _ in self.katBltIns]; 1656 1657 1657 1658 iThreadedFunction = 1 + len(self.katBltIns); … … 1827 1828 ' */', 1828 1829 )); 1829 for sFuncNm, cArgs in self.katBltIns:1830 for sFuncNm, cArgs, _ in self.katBltIns: 1830 1831 asFuncTable.append(' iemThreadedFunc_BltIn_%s,' % (sFuncNm,)); 1831 1832 asNameTable.append(' "BltIn_%s",' % (sFuncNm,)); … … 1963 1964 + ' */\n' 1964 1965 ); 1965 for sFuncNm, _ in self.katBltIns: 1966 oOut.write(' NULL, /*BltIn_%s*/\n' % (sFuncNm,)) 1966 for sFuncNm, _, fHaveRecompFunc in self.katBltIns: 1967 if fHaveRecompFunc: 1968 oOut.write(' iemNativeRecompFunc_BltIn_%s,\n' % (sFuncNm,)) 1969 else: 1970 oOut.write(' NULL, /*BltIn_%s*/\n' % (sFuncNm,)) 1967 1971 1968 1972 iThreadedFunction = 1 + len(self.katBltIns); -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r101304 r101305 658 658 AssertReturn(pu32CodeBuf, UINT32_MAX); 659 659 pu32CodeBuf[off++] = Armv8A64MkInstrStLdRUOff(kArmv8A64InstrLdStType_St_Dword, iGprSrc, 660 ARMV8_A64_ BP, (uint32_t)offDisp / 8);661 } 662 else if (offDisp >= -256 offDisp <= 256)660 ARMV8_A64_REG_BP, (uint32_t)offDisp / 8); 661 } 662 else if (offDisp >= -256 && offDisp <= 256) 663 663 { 664 664 /* stur w/ signed imm9 (unscaled) */ 665 665 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 666 666 AssertReturn(pu32CodeBuf, UINT32_MAX); 667 pu32CodeBuf[off++] = Armv8A64MkInstrSturLdur(kArmv8A64InstrLdStType_St_Dword, iGprSrc, ARMV8_A64_ BP, offDisp);667 pu32CodeBuf[off++] = Armv8A64MkInstrSturLdur(kArmv8A64InstrLdStType_St_Dword, iGprSrc, ARMV8_A64_REG_BP, offDisp); 668 668 } 669 669 else … … 673 673 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 674 674 AssertReturn(pu32CodeBuf, UINT32_MAX); 675 pu32CodeBuf[off++] = Armv8A64MkInstrStLdRegIdx(kArmv8A64InstrLdStType_St_Dword, iGprSrc, ARMV8_A64_ BP,675 pu32CodeBuf[off++] = Armv8A64MkInstrStLdRegIdx(kArmv8A64InstrLdStType_St_Dword, iGprSrc, ARMV8_A64_REG_BP, 676 676 IEMNATIVE_REG_FIXDE_TMP0, kArmv8A64InstrLdStExtend_Sxtw); 677 677 }
Note:
See TracChangeset
for help on using the changeset viewer.