Similar to the TRANS() macro introduced in commit fb3164e412d, introduce TRANS_CHECK() which takes a boolean expression as argument.
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- target/mips/tcg/translate.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index 6111493651f..3ef09cc50c9 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -224,6 +224,15 @@ bool decode_ext_vr54xx(DisasContext *ctx, uint32_t insn); static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \ { return FUNC(ctx, a, __VA_ARGS__); } +#define TRANS_CHECK(NAME, CHECK_EXPR, FUNC, ...) \ + static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \ + { \ + if (!(CHECK_EXPR)) { \ + return false; \ + } \ + return FUNC(ctx, a, __VA_ARGS__); \ + } + static inline bool cpu_is_bigendian(DisasContext *ctx) { return extract32(ctx->CP0_Config0, CP0C0_BE, 1); -- 2.31.1