[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 20/21] target/riscv: Add MAX_INSN_LEN and insn_len
From: |
Alistair Francis |
Subject: |
Re: [PATCH v6 20/21] target/riscv: Add MAX_INSN_LEN and insn_len |
Date: |
Mon, 22 Aug 2022 09:44:26 +1000 |
On Fri, Aug 19, 2022 at 1:42 PM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> These will be useful in properly ending the TB.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@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
>
>
- [PATCH v6 16/21] accel/tcg: Add pc and host_pc params to gen_intermediate_code, (continued)
- [PATCH v6 16/21] accel/tcg: Add pc and host_pc params to gen_intermediate_code, Richard Henderson, 2022/08/18
- [PATCH v6 19/21] target/i386: Make translator stop before the end of a page, Richard Henderson, 2022/08/18
- [PATCH v6 17/21] accel/tcg: Add fast path for translator_ld*, Richard Henderson, 2022/08/18
- [PATCH v6 08/21] accel/tcg: Properly implement get_page_addr_code for user-only, Richard Henderson, 2022/08/18
- [PATCH v6 21/21] target/riscv: Make translator stop before the end of a page, Richard Henderson, 2022/08/18
- [PATCH v6 20/21] target/riscv: Add MAX_INSN_LEN and insn_len, Richard Henderson, 2022/08/18
- Re: [PATCH v6 20/21] target/riscv: Add MAX_INSN_LEN and insn_len,
Alistair Francis <=
- Re: [PATCH v6 00/21] linux-user: Fix siginfo_t contents when jumping to non-readable pages, Vivian Wang, 2022/08/19