On Fri, Aug 19, 2022 at 1:42 PM Richard Henderson <richard.hender...@linaro.org> wrote: > > These will be useful in properly ending the TB. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > target/riscv/translate.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/target/riscv/translate.c b/target/riscv/translate.c > index 38666ddc91..a719aa6e63 100644 > --- a/target/riscv/translate.c > +++ b/target/riscv/translate.c > @@ -1022,6 +1022,14 @@ static uint32_t opcode_at(DisasContextBase *dcbase, > target_ulong pc) > /* Include decoders for factored-out extensions */ > #include "decode-XVentanaCondOps.c.inc" > > +/* The specification allows for longer insns, but not supported by qemu. */ > +#define MAX_INSN_LEN 4 > + > +static inline int insn_len(uint16_t first_word) > +{ > + return (first_word & 3) == 3 ? 4 : 2; > +} > + > static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t > opcode) > { > /* > @@ -1037,7 +1045,7 @@ static void decode_opc(CPURISCVState *env, DisasContext > *ctx, uint16_t opcode) > }; > > /* Check for compressed insn */ > - if (extract16(opcode, 0, 2) != 3) { > + if (insn_len(opcode) == 2) { > if (!has_ext(ctx, RVC)) { > gen_exception_illegal(ctx); > } else { > -- > 2.34.1 > >