VirtualBox

Changeset 99819 in vbox


Ignore:
Timestamp:
May 16, 2023 11:24:30 PM (20 months ago)
Author:
vboxsync
Message:

VMM/IEM: More recompiler work. bugref:10369

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThreadedRecompiler.cpp

    r99686 r99819  
    112112
    113113/*
     114 * IEM_MC_DEFER_TO_CIMPL_0 is easily wrapped up.
     115 *
     116 * Doing so will also take care of IEMOP_RAISE_DIVIDE_ERROR, IEMOP_RAISE_INVALID_LOCK_PREFIX,
     117 * IEMOP_RAISE_INVALID_OPCODE and their users.
     118 */
     119#undef IEM_MC_DEFER_TO_CIMPL_0
     120#define IEM_MC_DEFER_TO_CIMPL_0(a_pfnCImpl) iemThreadedRecompilerMcDeferToCImpl0(pVCpu, a_pfnCImpl)
     121
     122typedef IEM_CIMPL_DECL_TYPE_0(FNIEMCIMPL0);
     123typedef FNIEMCIMPL0 *PFNIEMCIMPL0;
     124
     125DECLINLINE(VBOXSTRICTRC) iemThreadedRecompilerMcDeferToCImpl0(PVMCPUCC pVCpu, PFNIEMCIMPL0 pfnCImpl)
     126{
     127    return pfnCImpl(pVCpu, IEM_GET_INSTR_LEN(pVCpu));
     128}
     129
     130/** @todo deal with IEM_MC_DEFER_TO_CIMPL_1, IEM_MC_DEFER_TO_CIMPL_2 and
     131 *        IEM_MC_DEFER_TO_CIMPL_3 as well. */
     132
     133/*
    114134 * Include the "annotated" IEMAllInstructions*.cpp.h files.
    115135 */
    116136#include "IEMThreadedInstructions.cpp.h"
    117137
     138
     139
     140/*
     141 * Real code.
     142 */
     143
  • trunk/src/VBox/VMM/VMMAll/IEMAllThreadedPython.py

    r99800 r99819  
    809809            if ThreadedFunctionVariation.ksVariation_Addr32Flat in dByVariation:
    810810                aoStmts.extend([
    811                     iai.McCppGeneric('        if (false /** @todo */) '),
     811                    iai.McCppGeneric('        if (false /** @todo */)'),
    812812                    dByVariation[ThreadedFunctionVariation.ksVariation_Addr32Flat].emitThreadedCallStmt(12),
     813                    iai.McCppGeneric('        RT_FALL_THRU();'),
    813814                ]);
    814815            aoStmts.extend([
     
    859860                if not oStmt.isCppStmt():
    860861                    if (   oStmt.sName.startswith('IEM_MC_MAYBE_RAISE_') \
    861                         or oStmt.sName in ('IEM_MC_ADVANCE_RIP_AND_FINISH', \
    862                                            'IEM_MC_CALL_CIMPL_1',
    863                                            'IEM_MC_CALL_CIMPL_2',
    864                                            'IEM_MC_CALL_CIMPL_3',
    865                                            'IEM_MC_CALL_CIMPL_4',
    866                                            'IEM_MC_CALL_CIMPL_5', )):
     862                        or (oStmt.sName.endswith('_AND_FINISH') and oStmt.sName.startswith('IEM_MC_'))
     863                        or oStmt.sName.startswith('IEM_MC_CALL_CIMPL_')
     864                        or oStmt.sName in ('IEM_MC_RAISE_DIVIDE_ERROR',)):
    867865                        aoDecoderStmts.pop();
    868866                        aoDecoderStmts.extend(self.emitThreadedCallStmts());
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette