diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2021-06-01 16:35:15 -0300 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2021-06-03 18:10:31 +1000 |
commit | c9826ae97e4df418eb44290a9c68983f723a21af (patch) | |
tree | 1e253d9006a631e32e394fda707ba029795e8e4e /target | |
parent | 51b385db586dafa4cd1f23413f0cbbf5ec2a256c (diff) | |
download | qemu-c9826ae97e4df418eb44290a9c68983f723a21af.zip qemu-c9826ae97e4df418eb44290a9c68983f723a21af.tar.gz qemu-c9826ae97e4df418eb44290a9c68983f723a21af.tar.bz2 |
target/ppc: Introduce macros to check isa extensions
These will be used by the decodetree trans_* functions
to early-exit when the instruction set is not enabled.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
Message-Id: <20210601193528.2533031-2-matheus.ferst@eldorado.org.br>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'target')
-rw-r--r-- | target/ppc/translate.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/target/ppc/translate.c b/target/ppc/translate.c index e16a272..11fd334 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7664,6 +7664,32 @@ static inline void set_avr64(int regno, TCGv_i64 src, bool high) tcg_gen_st_i64(src, cpu_env, avr64_offset(regno, high)); } +/* + * Helpers for trans_* functions to check for specific insns flags. + * Use token pasting to ensure that we use the proper flag with the + * proper variable. + */ +#define REQUIRE_INSNS_FLAGS(CTX, NAME) \ + do { \ + if (((CTX)->insns_flags & PPC_##NAME) == 0) { \ + return false; \ + } \ + } while (0) + +#define REQUIRE_INSNS_FLAGS2(CTX, NAME) \ + do { \ + if (((CTX)->insns_flags2 & PPC2_##NAME) == 0) { \ + return false; \ + } \ + } while (0) + +/* Then special-case the check for 64-bit so that we elide code for ppc32. */ +#if TARGET_LONG_BITS == 32 +# define REQUIRE_64BIT(CTX) return false +#else +# define REQUIRE_64BIT(CTX) REQUIRE_INSNS_FLAGS(CTX, 64B) +#endif + #include "translate/fp-impl.c.inc" #include "translate/vmx-impl.c.inc" |