mirror of https://github.com/xemu-project/xemu.git
target/riscv: Introduce cur_insn_len into DisasContext
Use cur_insn_len to store the length of the current instruction to prepare for PC-relative translation. Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn> Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20230526072124.298466-3-liweiwei@iscas.ac.cn> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
bfc4f9e351
commit
8ef23a329a
|
@ -61,6 +61,7 @@ typedef struct DisasContext {
|
|||
DisasContextBase base;
|
||||
/* pc_succ_insn points to the instruction following base.pc_next */
|
||||
target_ulong pc_succ_insn;
|
||||
target_ulong cur_insn_len;
|
||||
target_ulong priv_ver;
|
||||
RISCVMXL misa_mxl_max;
|
||||
RISCVMXL xl;
|
||||
|
@ -1116,8 +1117,9 @@ static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t opcode)
|
|||
};
|
||||
|
||||
ctx->virt_inst_excp = false;
|
||||
ctx->cur_insn_len = insn_len(opcode);
|
||||
/* Check for compressed insn */
|
||||
if (insn_len(opcode) == 2) {
|
||||
if (ctx->cur_insn_len == 2) {
|
||||
ctx->opcode = opcode;
|
||||
ctx->pc_succ_insn = ctx->base.pc_next + 2;
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue