Changeset 108901 in vbox
- Timestamp:
- Apr 8, 2025 6:32:29 PM (6 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168358
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInternal.h
r108900 r108901 3032 3032 # define IEM_CIMPL_NEEDS_INSTR_LEN 3033 3033 #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 3034 3041 3035 3042 /** … … 3039 3046 * @param a_Name The name of the type. 3040 3047 */ 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)) 3048 3050 3049 3051 /** … … 3053 3055 * @param a_Name The name of the function 3054 3056 */ 3055 #ifdef IEM_CIMPL_NEEDS_INSTR_LEN3056 3057 # 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)) 3062 3059 /** 3063 3060 * Prototype version of IEM_CIMPL_DEF_0. 3064 3061 */ 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)) 3072 3064 /** 3073 3065 * For calling a C instruction implementation function taking no extra … … 3079 3071 * @param a_fn The name of the function. 3080 3072 */ 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) 3086 3074 3087 3075 /** Type for a C instruction implementation function taking no extra … … 3100 3088 * @param a_Arg0 The argument name. 3101 3089 */ 3102 # 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)) 3104 3092 /** 3105 3093 * For defining a C instruction implementation function taking one extra … … 3110 3098 * @param a_Arg0 The argument name. 3111 3099 */ 3112 # 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)) 3114 3102 /** 3115 3103 * Prototype version of IEM_CIMPL_DEF_1. 3116 3104 */ 3117 # 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)) 3119 3107 /** 3120 3108 * For calling a C instruction implementation function taking one extra … … 3127 3115 * @param a0 The name of the 1st argument. 3128 3116 */ 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)) 3130 3118 3131 3119 /** … … 3139 3127 * @param a_Arg1 The name of the 2nd argument. 3140 3128 */ 3141 # 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)) 3143 3131 /** 3144 3132 * For defining a C instruction implementation function taking two extra … … 3151 3139 * @param a_Arg1 The name of the 2nd argument. 3152 3140 */ 3153 # 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)) 3155 3143 /** 3156 3144 * Prototype version of IEM_CIMPL_DEF_2. 3157 3145 */ 3158 # 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)) 3160 3148 /** 3161 3149 * For calling a C instruction implementation function taking two extra … … 3169 3157 * @param a1 The name of the 2nd argument. 3170 3158 */ 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)) 3172 3160 3173 3161 /** … … 3183 3171 * @param a_Arg2 The name of the 3rd argument. 3184 3172 */ 3185 # 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)) 3187 3175 /** 3188 3176 * For defining a C instruction implementation function taking three extra … … 3197 3185 * @param a_Arg2 The name of the 3rd argument. 3198 3186 */ 3199 # 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)) 3201 3189 /** 3202 3190 * Prototype version of IEM_CIMPL_DEF_3. 3203 3191 */ 3204 # 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)) 3206 3194 /** 3207 3195 * For calling a C instruction implementation function taking three extra … … 3216 3204 * @param a2 The name of the 3rd argument. 3217 3205 */ 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)) 3219 3207 3220 3208 … … 3233 3221 * @param a_Arg3 The name of the 4th argument. 3234 3222 */ 3235 # 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)) 3237 3225 /** 3238 3226 * For defining a C instruction implementation function taking four extra … … 3249 3237 * @param a_Arg3 The name of the 4th argument. 3250 3238 */ 3251 # 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, \ 3253 3241 a_Type2 a_Arg2, a_Type3 a_Arg3)) 3254 3242 /** … … 3256 3244 */ 3257 3245 # 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, \ 3259 3247 a_Type2 a_Arg2, a_Type3 a_Arg3)) 3260 3248 /** … … 3271 3259 * @param a3 The name of the 4th argument. 3272 3260 */ 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)) 3274 3262 3275 3263 … … 3290 3278 * @param a_Arg4 The name of the 5th argument. 3291 3279 */ 3292 # 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, \ 3294 3282 a_Type0 a_Arg0, a_Type1 a_Arg1, a_Type2 a_Arg2, \ 3295 3283 a_Type3 a_Arg3, a_Type4 a_Arg4)) … … 3310 3298 * @param a_Arg4 The name of the 5th argument. 3311 3299 */ 3312 # 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, \ 3314 3302 a_Type2 a_Arg2, a_Type3 a_Arg3, a_Type4 a_Arg4)) 3315 3303 /** 3316 3304 * Prototype version of IEM_CIMPL_DEF_5. 3317 3305 */ 3318 # 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, \ 3320 3308 a_Type2 a_Arg2, a_Type3 a_Arg3, a_Type4 a_Arg4)) 3321 3309 /** … … 3333 3321 * @param a4 The name of the 5th argument. 3334 3322 */ 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)) 3336 3324 3337 3325 /** @} */ -
trunk/src/VBox/VMM/include/IEMMc.h
r108900 r108901 1165 1165 * @param a0 The argument. 1166 1166 */ 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) \ 1168 1169 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 1169 1174 1170 1175 /** … … 1179 1184 * @param a1 The second extra argument. 1180 1185 */ 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) \ 1182 1188 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 1183 1193 1184 1194 /** … … 1194 1204 * @param a2 The third extra argument. 1195 1205 */ 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) \ 1197 1208 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 1198 1213 1199 1214 /** … … 1210 1225 * @param a3 The fourth extra argument. 1211 1226 */ 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) \ 1213 1229 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 1214 1234 1215 1235 /** … … 1227 1247 * @param a4 The fifth extra argument. 1228 1248 */ 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) \ 1230 1251 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 1231 1256 1232 1257 /** … … 1262 1287 * @param a0 The argument. 1263 1288 */ 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) \ 1265 1291 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 1266 1296 1267 1297 /** … … 1278 1308 * @param a1 The second extra argument. 1279 1309 */ 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) \ 1281 1312 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 1282 1317 1283 1318 /** … … 1295 1330 * @param a2 The third extra argument. 1296 1331 */ 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) \ 1298 1334 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 1299 1339 1300 1340
Note:
See TracChangeset
for help on using the changeset viewer.