[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 01/35] target/riscv: Move CPURISCVState point
From: |
Alistair Francis |
Subject: |
Re: [Qemu-devel] [PATCH v3 01/35] target/riscv: Move CPURISCVState pointer to DisasContext |
Date: |
Wed, 31 Oct 2018 13:14:02 -0700 |
On Wed, Oct 31, 2018 at 6:27 AM Bastian Koppelmann
<address@hidden> wrote:
>
> CPURISCVState is rarely used, so there is no need to pass it to every
> translate function. This paves the way for decodetree which only passes
> DisasContext to translate functions.
>
> Reviewed-by: Palmer Dabbelt <address@hidden>
> Signed-off-by: Bastian Koppelmann <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Alistair
> ---
> target/riscv/translate.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/target/riscv/translate.c b/target/riscv/translate.c
> index 18d7b6d147..e81b9f097e 100644
> --- a/target/riscv/translate.c
> +++ b/target/riscv/translate.c
> @@ -52,6 +52,7 @@ typedef struct DisasContext {
> to any system register, which includes CSR_FRM, so we do not have
> to reset this known value. */
> int frm;
> + CPURISCVState *env;
> } DisasContext;
>
> /* convert riscv funct3 to qemu memop for load/store */
> @@ -1789,19 +1790,19 @@ static void decode_RV32_64G(CPURISCVState *env,
> DisasContext *ctx)
> }
> }
>
> -static void decode_opc(CPURISCVState *env, DisasContext *ctx)
> +static void decode_opc(DisasContext *ctx)
> {
> /* check for compressed insn */
> if (extract32(ctx->opcode, 0, 2) != 3) {
> - if (!riscv_has_ext(env, RVC)) {
> + if (!riscv_has_ext(ctx->env, RVC)) {
> gen_exception_illegal(ctx);
> } else {
> ctx->pc_succ_insn = ctx->base.pc_next + 2;
> - decode_RV32_64C(env, ctx);
> + decode_RV32_64C(ctx->env, ctx);
> }
> } else {
> ctx->pc_succ_insn = ctx->base.pc_next + 4;
> - decode_RV32_64G(env, ctx);
> + decode_RV32_64G(ctx->env, ctx);
> }
> }
>
> @@ -1846,10 +1847,10 @@ static bool
> riscv_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *cpu,
> static void riscv_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
> {
> DisasContext *ctx = container_of(dcbase, DisasContext, base);
> - CPURISCVState *env = cpu->env_ptr;
> + ctx->env = cpu->env_ptr;
>
> - ctx->opcode = cpu_ldl_code(env, ctx->base.pc_next);
> - decode_opc(env, ctx);
> + ctx->opcode = cpu_ldl_code(ctx->env, ctx->base.pc_next);
> + decode_opc(ctx);
> ctx->base.pc_next = ctx->pc_succ_insn;
>
> if (ctx->base.is_jmp == DISAS_NEXT) {
> --
> 2.19.1
>
>
- Re: [Qemu-devel] [PATCH v3 06/35] target/riscv: Convert RVXI arithmetic insns to decodetree, (continued)
- [Qemu-devel] [PATCH v3 05/35] target/riscv: Convert RV64I load/store insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 09/35] target/riscv: Convert RVXM insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 12/35] target/riscv: Convert RV32F insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 01/35] target/riscv: Move CPURISCVState pointer to DisasContext, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 10/35] target/riscv: Convert RV32A insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 02/35] target/riscv: Activate decodetree and implemnt LUI & AUIPC, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 07/35] target/riscv: Convert RVXI fence insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 03/35] target/riscv: Convert RVXI branch insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 15/35] target/riscv: Convert RV64D insns to decodetree, Bastian Koppelmann, 2018/10/31
- [Qemu-devel] [PATCH v3 08/35] target/riscv: Convert RVXI csr insns to decodetree, Bastian Koppelmann, 2018/10/31