target/riscv: Use xl instead of mxl for disassemble
Disassemble function(plugin_disas, target_disas, monitor_disas) will always call set_disas_info before disassembling instructions. plugin_disas and target_disas will always be called under a TB, which has the same XLEN. We can't ensure that monitor_disas will always be called under a TB, but current XLEN will still be a better choice, thus we can ensure at least the disassemble of the nearest one TB is right. Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu> Message-Id: <20230612111034.3955227-2-christoph.muellner@vrull.eu> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
fcb237e64f
commit
94692c3a34
@ -858,9 +858,10 @@ static void riscv_cpu_reset_hold(Object *obj)
|
|||||||
static void riscv_cpu_disas_set_info(CPUState *s, disassemble_info *info)
|
static void riscv_cpu_disas_set_info(CPUState *s, disassemble_info *info)
|
||||||
{
|
{
|
||||||
RISCVCPU *cpu = RISCV_CPU(s);
|
RISCVCPU *cpu = RISCV_CPU(s);
|
||||||
|
CPURISCVState *env = &cpu->env;
|
||||||
info->target_info = &cpu->cfg;
|
info->target_info = &cpu->cfg;
|
||||||
|
|
||||||
switch (riscv_cpu_mxl(&cpu->env)) {
|
switch (env->xl) {
|
||||||
case MXL_RV32:
|
case MXL_RV32:
|
||||||
info->print_insn = print_insn_riscv32;
|
info->print_insn = print_insn_riscv32;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user