Browse Source

disas: Have disas_set_info() take a const CPUState

The CPUClass::disas_set_info() handler is meant to initialize
the %disassemble_info structure; it shoudn't alter the CPU state.
Enforce the CPUState can not be modified by having the handler
take a const pointer.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260202222412.24923-8-philmd@linaro.org>
pull/319/head
Philippe Mathieu-Daudé 6 months ago
parent
commit
a63b90ca6c
  1. 2
      include/hw/core/cpu.h
  2. 3
      target/alpha/cpu.c
  3. 6
      target/arm/cpu.c
  4. 2
      target/avr/cpu.c
  5. 3
      target/hexagon/cpu.c
  6. 2
      target/hppa/cpu.c
  7. 6
      target/i386/cpu.c
  8. 3
      target/loongarch/cpu.c
  9. 2
      target/m68k/cpu.c
  10. 2
      target/microblaze/cpu.c
  11. 7
      target/mips/cpu.c
  12. 2
      target/openrisc/cpu.c
  13. 5
      target/ppc/cpu_init.c
  14. 7
      target/riscv/cpu.c
  15. 2
      target/rx/cpu.c
  16. 2
      target/s390x/cpu.c
  17. 3
      target/sh4/cpu.c
  18. 3
      target/sparc/cpu.c
  19. 3
      target/xtensa/cpu.c

2
include/hw/core/cpu.h

@ -175,7 +175,7 @@ struct CPUClass {
const char * (*gdb_arch_name)(CPUState *cpu);
const char * (*gdb_get_core_xml_file)(CPUState *cpu);
void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
void (*disas_set_info)(const CPUState *cpu, disassemble_info *info);
const char *deprecation_note;
struct AccelCPUClass *accel_cpu;

3
target/alpha/cpu.c

@ -98,7 +98,8 @@ static int alpha_cpu_mmu_index(CPUState *cs, bool ifetch)
return alpha_env_mmu_index(cpu_env(cs));
}
static void alpha_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
static void alpha_cpu_disas_set_info(const CPUState *cpu,
disassemble_info *info)
{
info->endian = BFD_ENDIAN_LITTLE;
info->mach = bfd_mach_alpha_ev6;

6
target/arm/cpu.c

@ -789,10 +789,10 @@ static void arm_wfxt_timer_cb(void *opaque)
}
#endif
static void arm_disas_set_info(CPUState *cpu, disassemble_info *info)
static void arm_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
ARMCPU *ac = ARM_CPU(cpu);
CPUARMState *env = &ac->env;
const ARMCPU *ac = ARM_CPU(cpu);
const CPUARMState *env = &ac->env;
bool sctlr_b = arm_sctlr_b(env);
if (is_a64(env)) {

2
target/avr/cpu.c

@ -116,7 +116,7 @@ static void avr_cpu_reset_hold(Object *obj, ResetType type)
memset(env->r, 0, sizeof(env->r));
}
static void avr_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
static void avr_cpu_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
info->endian = BFD_ENDIAN_LITTLE;
info->mach = bfd_arch_avr;

3
target/hexagon/cpu.c

@ -301,7 +301,8 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type)
set_float_default_nan_pattern(0b11111111, &env->fp_status);
}
static void hexagon_cpu_disas_set_info(CPUState *s, disassemble_info *info)
static void hexagon_cpu_disas_set_info(const CPUState *cs,
disassemble_info *info)
{
info->print_insn = print_insn_hexagon;
info->endian = BFD_ENDIAN_LITTLE;

2
target/hppa/cpu.c

@ -150,7 +150,7 @@ static int hppa_cpu_mmu_index(CPUState *cs, bool ifetch)
return env->psw & PSW_W ? MMU_ABS_W_IDX : MMU_ABS_IDX;
}
static void hppa_cpu_disas_set_info(CPUState *cs, disassemble_info *info)
static void hppa_cpu_disas_set_info(const CPUState *cs, disassemble_info *info)
{
info->mach = bfd_mach_hppa20;
info->endian = BFD_ENDIAN_BIG;

6
target/i386/cpu.c

@ -10359,10 +10359,10 @@ static bool x86_cpu_has_work(CPUState *cs)
}
#endif /* !CONFIG_USER_ONLY */
static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
static void x86_disas_set_info(const CPUState *cs, disassemble_info *info)
{
X86CPU *cpu = X86_CPU(cs);
CPUX86State *env = &cpu->env;
const X86CPU *cpu = X86_CPU(cs);
const CPUX86State *env = &cpu->env;
info->endian = BFD_ENDIAN_LITTLE;
info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64

3
target/loongarch/cpu.c

@ -506,7 +506,8 @@ static void loongarch_cpu_reset_hold(Object *obj, ResetType type)
cs->exception_index = -1;
}
static void loongarch_cpu_disas_set_info(CPUState *s, disassemble_info *info)
static void loongarch_cpu_disas_set_info(const CPUState *cs,
disassemble_info *info)
{
info->endian = BFD_ENDIAN_LITTLE;
info->print_insn = print_insn_loongarch;

2
target/m68k/cpu.c

@ -176,7 +176,7 @@ static void m68k_cpu_reset_hold(Object *obj, ResetType type)
env->pc = 0;
}
static void m68k_cpu_disas_set_info(CPUState *s, disassemble_info *info)
static void m68k_cpu_disas_set_info(const CPUState *cs, disassemble_info *info)
{
info->print_insn = print_insn_m68k;
info->endian = BFD_ENDIAN_BIG;

2
target/microblaze/cpu.c

@ -233,7 +233,7 @@ static void mb_cpu_reset_hold(Object *obj, ResetType type)
#endif
}
static void mb_disas_set_info(CPUState *cpu, disassemble_info *info)
static void mb_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
info->mach = bfd_arch_microblaze;
info->print_insn = print_insn_microblaze;

7
target/mips/cpu.c

@ -422,9 +422,12 @@ static void mips_cpu_reset_hold(Object *obj, ResetType type)
#endif
}
static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info)
static void mips_cpu_disas_set_info(const CPUState *cs, disassemble_info *info)
{
if (!(cpu_env(s)->insn_flags & ISA_NANOMIPS32)) {
const MIPSCPU *cpu = MIPS_CPU(cs);
const CPUMIPSState *env = &cpu->env;
if (!(env->insn_flags & ISA_NANOMIPS32)) {
info->endian = TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG
: BFD_ENDIAN_LITTLE;
info->print_insn = TARGET_BIG_ENDIAN ? print_insn_big_mips

2
target/openrisc/cpu.c

@ -94,7 +94,7 @@ static int openrisc_cpu_mmu_index(CPUState *cs, bool ifetch)
return MMU_NOMMU_IDX; /* mmu is disabled */
}
static void openrisc_disas_set_info(CPUState *cpu, disassemble_info *info)
static void openrisc_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
info->endian = BFD_ENDIAN_BIG;
info->print_insn = print_insn_or1k;

5
target/ppc/cpu_init.c

@ -7452,9 +7452,10 @@ static bool ppc_pvr_match_default(PowerPCCPUClass *pcc, uint32_t pvr, bool best)
return pcc->pvr == pvr;
}
static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
static void ppc_disas_set_info(const CPUState *cs, disassemble_info *info)
{
CPUPPCState *env = cpu_env(cs);
const PowerPCCPU *cpu = POWERPC_CPU(cs);
const CPUPPCState *env = &cpu->env;
info->endian = ppc_env_is_little_endian(env) ? BFD_ENDIAN_LITTLE
: BFD_ENDIAN_BIG;

7
target/riscv/cpu.c

@ -795,10 +795,11 @@ static void riscv_cpu_reset_hold(Object *obj, ResetType type)
#endif
}
static void riscv_cpu_disas_set_info(CPUState *s, disassemble_info *info)
static void riscv_cpu_disas_set_info(const CPUState *s, disassemble_info *info)
{
RISCVCPU *cpu = RISCV_CPU(s);
CPURISCVState *env = &cpu->env;
const RISCVCPU *cpu = RISCV_CPU(s);
const CPURISCVState *env = &cpu->env;
info->target_info = &cpu->cfg;
/*

2
target/rx/cpu.c

@ -178,7 +178,7 @@ static void rx_cpu_set_irq(void *opaque, int no, int request)
}
}
static void rx_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
static void rx_cpu_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
info->endian = BFD_ENDIAN_LITTLE;
info->mach = bfd_mach_rx;

2
target/s390x/cpu.c

@ -222,7 +222,7 @@ static void s390_cpu_reset_hold(Object *obj, ResetType type)
}
}
static void s390_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
static void s390_cpu_disas_set_info(const CPUState *cpu, disassemble_info *info)
{
info->mach = bfd_mach_s390_64;
info->cap_arch = CS_ARCH_SYSZ;

3
target/sh4/cpu.c

@ -164,7 +164,8 @@ static void superh_cpu_reset_hold(Object *obj, ResetType type)
set_float_ftz_detection(float_ftz_before_rounding, &env->fp_status);
}
static void superh_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
static void superh_cpu_disas_set_info(const CPUState *cpu,
disassemble_info *info)
{
info->endian = TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG
: BFD_ENDIAN_LITTLE;

3
target/sparc/cpu.c

@ -103,7 +103,8 @@ static bool sparc_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
}
#endif /* !CONFIG_USER_ONLY */
static void cpu_sparc_disas_set_info(CPUState *cpu, disassemble_info *info)
static void cpu_sparc_disas_set_info(const CPUState *cpu,
disassemble_info *info)
{
info->print_insn = print_insn_sparc;
info->endian = BFD_ENDIAN_BIG;

3
target/xtensa/cpu.c

@ -226,7 +226,8 @@ static ObjectClass *xtensa_cpu_class_by_name(const char *cpu_model)
return oc;
}
static void xtensa_cpu_disas_set_info(CPUState *cs, disassemble_info *info)
static void xtensa_cpu_disas_set_info(const CPUState *cs,
disassemble_info *info)
{
XtensaCPU *cpu = XTENSA_CPU(cs);

Loading…
Cancel
Save