VirtualBox

Changeset 108901 in vbox


Ignore:
Timestamp:
Apr 8, 2025 6:32:29 PM (6 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168358
Message:

VMM/IEM: More ARM target work. jiraref:VBP-1598

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r108900 r108901  
    30323032# define IEM_CIMPL_NEEDS_INSTR_LEN
    30333033#endif
     3034#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     3035# define IEM_CIMPL_COMMA_EXTRA_ARGS_CALL    , cbInstr
     3036# define IEM_CIMPL_COMMA_EXTRA_ARGS         , uint8_t cbInstr
     3037#else
     3038# define IEM_CIMPL_COMMA_EXTRA_ARGS_CALL
     3039# define IEM_CIMPL_COMMA_EXTRA_ARGS
     3040#endif
    30343041
    30353042/**
     
    30393046 * @param   a_Name              The name of the type.
    30403047 */
    3041 #ifdef IEM_CIMPL_NEEDS_INSTR_LEN
    3042 # define IEM_CIMPL_DECL_TYPE_0(a_Name) \
    3043     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr))
    3044 #else
    3045 # define IEM_CIMPL_DECL_TYPE_0(a_Name) \
    3046     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu))
    3047 #endif
     3048#define IEM_CIMPL_DECL_TYPE_0(a_Name) \
     3049    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS))
    30483050
    30493051/**
     
    30533055 * @param   a_Name              The name of the function
    30543056 */
    3055 #ifdef IEM_CIMPL_NEEDS_INSTR_LEN
    30563057# define IEM_CIMPL_DEF_0(a_Name) \
    3057     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr))
    3058 #else
    3059 # define IEM_CIMPL_DEF_0(a_Name) \
    3060     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu))
    3061 #endif
     3058    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS))
    30623059/**
    30633060 * Prototype version of IEM_CIMPL_DEF_0.
    30643061 */
    3065 #ifdef IEM_CIMPL_NEEDS_INSTR_LEN
    3066 # define IEM_CIMPL_PROTO_0(a_Name) \
    3067     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr))
    3068 #else
    3069 # define IEM_CIMPL_PROTO_0(a_Name) \
    3070     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu))
    3071 #endif
     3062#define IEM_CIMPL_PROTO_0(a_Name) \
     3063    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS))
    30723064/**
    30733065 * For calling a C instruction implementation function taking no extra
     
    30793071 * @param   a_fn                The name of the function.
    30803072 */
    3081 #ifdef IEM_CIMPL_NEEDS_INSTR_LEN
    3082 # define IEM_CIMPL_CALL_0(a_fn)            a_fn(pVCpu, cbInstr)
    3083 #else
    3084 # define IEM_CIMPL_CALL_0(a_fn)            a_fn(pVCpu)
    3085 #endif
     3073#define IEM_CIMPL_CALL_0(a_fn)              a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL)
    30863074
    30873075/** Type for a C instruction implementation function taking no extra
     
    31003088 * @param   a_Arg0              The argument name.
    31013089 */
    3102 # define IEM_CIMPL_DECL_TYPE_1(a_Name, a_Type0, a_Arg0) \
    3103     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0))
     3090#define IEM_CIMPL_DECL_TYPE_1(a_Name, a_Type0, a_Arg0) \
     3091    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name,(PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0))
    31043092/**
    31053093 * For defining a C instruction implementation function taking one extra
     
    31103098 * @param   a_Arg0              The argument name.
    31113099 */
    3112 # define IEM_CIMPL_DEF_1(a_Name, a_Type0, a_Arg0) \
    3113     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0))
     3100#define IEM_CIMPL_DEF_1(a_Name, a_Type0, a_Arg0) \
     3101    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name,(PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0))
    31143102/**
    31153103 * Prototype version of IEM_CIMPL_DEF_1.
    31163104 */
    3117 # define IEM_CIMPL_PROTO_1(a_Name, a_Type0, a_Arg0) \
    3118     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0))
     3105#define IEM_CIMPL_PROTO_1(a_Name, a_Type0, a_Arg0) \
     3106    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name,(PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0))
    31193107/**
    31203108 * For calling a C instruction implementation function taking one extra
     
    31273115 * @param   a0                  The name of the 1st argument.
    31283116 */
    3129 # define IEM_CIMPL_CALL_1(a_fn, a0)        a_fn(pVCpu, cbInstr, (a0))
     3117#define IEM_CIMPL_CALL_1(a_fn, a0)      a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL, (a0))
    31303118
    31313119/**
     
    31393127 * @param   a_Arg1              The name of the 2nd argument.
    31403128 */
    3141 # define IEM_CIMPL_DECL_TYPE_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
    3142     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1))
     3129#define IEM_CIMPL_DECL_TYPE_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
     3130    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1))
    31433131/**
    31443132 * For defining a C instruction implementation function taking two extra
     
    31513139 * @param   a_Arg1              The name of the 2nd argument.
    31523140 */
    3153 # define IEM_CIMPL_DEF_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
    3154     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1))
     3141#define IEM_CIMPL_DEF_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
     3142    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1))
    31553143/**
    31563144 * Prototype version of IEM_CIMPL_DEF_2.
    31573145 */
    3158 # define IEM_CIMPL_PROTO_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
    3159     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1))
     3146#define IEM_CIMPL_PROTO_2(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1) \
     3147    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1))
    31603148/**
    31613149 * For calling a C instruction implementation function taking two extra
     
    31693157 * @param   a1                  The name of the 2nd argument.
    31703158 */
    3171 # define IEM_CIMPL_CALL_2(a_fn, a0, a1)    a_fn(pVCpu, cbInstr, (a0), (a1))
     3159#define IEM_CIMPL_CALL_2(a_fn, a0, a1)  a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL, (a0), (a1))
    31723160
    31733161/**
     
    31833171 * @param   a_Arg2              The name of the 3rd argument.
    31843172 */
    3185 # define IEM_CIMPL_DECL_TYPE_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
    3186     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
     3173#define IEM_CIMPL_DECL_TYPE_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
     3174    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
    31873175/**
    31883176 * For defining a C instruction implementation function taking three extra
     
    31973185 * @param   a_Arg2              The name of the 3rd argument.
    31983186 */
    3199 # define IEM_CIMPL_DEF_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
    3200     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
     3187#define IEM_CIMPL_DEF_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
     3188    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
    32013189/**
    32023190 * Prototype version of IEM_CIMPL_DEF_3.
    32033191 */
    3204 # define IEM_CIMPL_PROTO_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
    3205     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
     3192#define IEM_CIMPL_PROTO_3(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2) \
     3193    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2))
    32063194/**
    32073195 * For calling a C instruction implementation function taking three extra
     
    32163204 * @param   a2                  The name of the 3rd argument.
    32173205 */
    3218 # define IEM_CIMPL_CALL_3(a_fn, a0, a1, a2) a_fn(pVCpu, cbInstr, (a0), (a1), (a2))
     3206#define IEM_CIMPL_CALL_3(a_fn, a0, a1, a2) a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL, (a0), (a1), (a2))
    32193207
    32203208
     
    32333221 * @param   a_Arg3              The name of the 4th argument.
    32343222 */
    3235 # define IEM_CIMPL_DECL_TYPE_4(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3) \
    3236     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2, a_Type3 a_Arg3))
     3223#define IEM_CIMPL_DECL_TYPE_4(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3) \
     3224    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2, a_Type3 a_Arg3))
    32373225/**
    32383226 * For defining a C instruction implementation function taking four extra
     
    32493237 * @param   a_Arg3              The name of the 4th argument.
    32503238 */
    3251 # define IEM_CIMPL_DEF_4(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3) \
    3252     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, \
     3239#define IEM_CIMPL_DEF_4(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3) \
     3240    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, \
    32533241                                             a_Type2 a_Arg2, a_Type3 a_Arg3))
    32543242/**
     
    32563244 */
    32573245# define IEM_CIMPL_PROTO_4(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3) \
    3258     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, \
     3246    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, \
    32593247                                               a_Type2 a_Arg2, a_Type3 a_Arg3))
    32603248/**
     
    32713259 * @param   a3                  The name of the 4th argument.
    32723260 */
    3273 # define IEM_CIMPL_CALL_4(a_fn, a0, a1, a2, a3) a_fn(pVCpu, cbInstr, (a0), (a1), (a2), (a3))
     3261#define IEM_CIMPL_CALL_4(a_fn, a0, a1, a2, a3) a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL, (a0), (a1), (a2), (a3))
    32743262
    32753263
     
    32903278 * @param   a_Arg4              The name of the 5th argument.
    32913279 */
    3292 # define IEM_CIMPL_DECL_TYPE_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
    3293     IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, \
     3280#define IEM_CIMPL_DECL_TYPE_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
     3281    IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, \
    32943282                                               a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2, \
    32953283                                               a_Type3 a_Arg3, a_Type4 a_Arg4))
     
    33103298 * @param   a_Arg4              The name of the 5th argument.
    33113299 */
    3312 # define IEM_CIMPL_DEF_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
    3313     IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, \
     3300#define IEM_CIMPL_DEF_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
     3301    IEM_DECL_IMPL_DEF(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, \
    33143302                                             a_Type2 a_Arg2, a_Type3 a_Arg3, a_Type4 a_Arg4))
    33153303/**
    33163304 * Prototype version of IEM_CIMPL_DEF_5.
    33173305 */
    3318 # define IEM_CIMPL_PROTO_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
    3319     IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu, uint8_t cbInstr, a_Type0 a_Arg0, a_Type1 a_Arg1, \
     3306#define IEM_CIMPL_PROTO_5(a_Name, a_Type0, a_Arg0, a_Type1, a_Arg1, a_Type2, a_Arg2, a_Type3, a_Arg3, a_Type4, a_Arg4) \
     3307    IEM_DECL_IMPL_PROTO(VBOXSTRICTRC, a_Name, (PVMCPUCC pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS, a_Type0 a_Arg0, a_Type1 a_Arg1, \
    33203308                                               a_Type2 a_Arg2, a_Type3 a_Arg3, a_Type4 a_Arg4))
    33213309/**
     
    33333321 * @param   a4                  The name of the 5th argument.
    33343322 */
    3335 # define IEM_CIMPL_CALL_5(a_fn, a0, a1, a2, a3, a4) a_fn(pVCpu, cbInstr, (a0), (a1), (a2), (a3), (a4))
     3323#define IEM_CIMPL_CALL_5(a_fn, a0, a1, a2, a3, a4) a_fn(pVCpu IEM_CIMPL_COMMA_EXTRA_ARGS_CALL, (a0), (a1), (a2), (a3), (a4))
    33363324
    33373325/** @}  */
  • trunk/src/VBox/VMM/include/IEMMc.h

    r108900 r108901  
    11651165 * @param   a0              The argument.
    11661166 */
    1167 #define IEM_MC_CALL_CIMPL_1(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
     1167#ifdef IEM_GET_INSTR_LEN
     1168# define IEM_MC_CALL_CIMPL_1(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
    11681169    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0))
     1170#else
     1171# define IEM_MC_CALL_CIMPL_1(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
     1172    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0))
     1173#endif
    11691174
    11701175/**
     
    11791184 * @param   a1              The second extra argument.
    11801185 */
    1181 #define IEM_MC_CALL_CIMPL_2(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
     1186#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1187# define IEM_MC_CALL_CIMPL_2(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
    11821188    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1))
     1189#else
     1190# define IEM_MC_CALL_CIMPL_2(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
     1191    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1))
     1192#endif
    11831193
    11841194/**
     
    11941204 * @param   a2              The third extra argument.
    11951205 */
    1196 #define IEM_MC_CALL_CIMPL_3(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
     1206#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1207# define IEM_MC_CALL_CIMPL_3(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
    11971208    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1, a2))
     1209#else
     1210# define IEM_MC_CALL_CIMPL_3(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
     1211    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1, a2))
     1212#endif
    11981213
    11991214/**
     
    12101225 * @param   a3              The fourth extra argument.
    12111226 */
    1212 #define IEM_MC_CALL_CIMPL_4(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3) \
     1227#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1228# define IEM_MC_CALL_CIMPL_4(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3) \
    12131229    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1, a2, a3))
     1230#else
     1231# define IEM_MC_CALL_CIMPL_4(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3) \
     1232    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1, a2, a3))
     1233#endif
    12141234
    12151235/**
     
    12271247 * @param   a4              The fifth extra argument.
    12281248 */
    1229 #define IEM_MC_CALL_CIMPL_5(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3, a4) \
     1249#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1250# define IEM_MC_CALL_CIMPL_5(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3, a4) \
    12301251    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1, a2, a3, a4))
     1252#else
     1253# define IEM_MC_CALL_CIMPL_5(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2, a3, a4) \
     1254    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1, a2, a3, a4))
     1255#endif
    12311256
    12321257/**
     
    12621287 * @param   a0              The argument.
    12631288 */
    1264 #define IEM_MC_DEFER_TO_CIMPL_1_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
     1289#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1290# define IEM_MC_DEFER_TO_CIMPL_1_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
    12651291    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0))
     1292#else
     1293# define IEM_MC_DEFER_TO_CIMPL_1_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0) \
     1294    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0))
     1295#endif
    12661296
    12671297/**
     
    12781308 * @param   a1              The second extra argument.
    12791309 */
    1280 #define IEM_MC_DEFER_TO_CIMPL_2_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
     1310#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1311# define IEM_MC_DEFER_TO_CIMPL_2_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
    12811312    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1))
     1313#else
     1314# define IEM_MC_DEFER_TO_CIMPL_2_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1) \
     1315    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1))
     1316#endif
    12821317
    12831318/**
     
    12951330 * @param   a2              The third extra argument.
    12961331 */
    1297 #define IEM_MC_DEFER_TO_CIMPL_3_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
     1332#ifdef IEM_CIMPL_NEEDS_INSTR_LEN
     1333# define IEM_MC_DEFER_TO_CIMPL_3_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
    12981334    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, IEM_GET_INSTR_LEN(pVCpu), a0, a1, a2))
     1335#else
     1336# define IEM_MC_DEFER_TO_CIMPL_3_RET(a_fFlags, a_fGstShwFlush, a_pfnCImpl, a0, a1, a2) \
     1337    IEM_MC_CALL_CIMPL_HLP_RET(a_fFlags, (a_pfnCImpl)(pVCpu, a0, a1, a2))
     1338#endif
    12991339
    13001340
Note: See TracChangeset for help on using the changeset viewer.

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