Skip to content

Commit

Permalink
disas: Remove uses of CPU env
Browse files Browse the repository at this point in the history
disas does not need to access the CPU env for any reason. Change the
APIs to accept CPU pointers instead. Small change pattern needs to be
applied to all target translate.c. This brings us closer to making
disas.o a common-obj and less architecture specific in general.

Cc: Richard Henderson <[email protected]>
Cc: Peter Maydell <[email protected]>
Cc: "Edgar E. Iglesias" <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Cc: Eduardo Habkost <[email protected]>
Cc: Michael Walle <[email protected]>
Cc: Aurelien Jarno <[email protected]>
Cc: Leon Alrae <[email protected]>
Cc: Jia Liu <[email protected]>
Cc: Alexander Graf <[email protected]>
Cc: Mark Cave-Ayland <[email protected]>
Cc: Bastian Koppelmann <[email protected]>
Cc: Guan Xuetao <[email protected]>
Cc: Max Filippov <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Signed-off-by: Peter Crosthwaite <[email protected]>
Acked-by: Luiz Capitulino <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
  • Loading branch information
pcrost authored and Markus Armbruster committed Jun 22, 2015
1 parent 5bcda5f commit d49190c
Show file tree
Hide file tree
Showing 21 changed files with 29 additions and 29 deletions.
14 changes: 7 additions & 7 deletions disas.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

typedef struct CPUDebug {
struct disassemble_info info;
CPUArchState *env;
CPUState *cpu;
} CPUDebug;

/* Filled in by elfload.c. Simplistic, but will do for now. */
Expand Down Expand Up @@ -39,7 +39,7 @@ target_read_memory (bfd_vma memaddr,
{
CPUDebug *s = container_of(info, CPUDebug, info);

cpu_memory_rw_debug(ENV_GET_CPU(s->env), memaddr, myaddr, length, 0);
cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0);
return 0;
}

Expand Down Expand Up @@ -195,7 +195,7 @@ static int print_insn_od_target(bfd_vma pc, disassemble_info *info)
bit 16 indicates little endian.
other targets - unused
*/
void target_disas(FILE *out, CPUArchState *env, target_ulong code,
void target_disas(FILE *out, CPUState *cpu, target_ulong code,
target_ulong size, int flags)
{
target_ulong pc;
Expand All @@ -205,7 +205,7 @@ void target_disas(FILE *out, CPUArchState *env, target_ulong code,

INIT_DISASSEMBLE_INFO(s.info, out, fprintf);

s.env = env;
s.cpu = cpu;
s.info.read_memory_func = target_read_memory;
s.info.buffer_vma = code;
s.info.buffer_length = size;
Expand Down Expand Up @@ -430,7 +430,7 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length,
if (monitor_disas_is_physical) {
cpu_physical_memory_read(memaddr, myaddr, length);
} else {
cpu_memory_rw_debug(ENV_GET_CPU(s->env), memaddr, myaddr, length, 0);
cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0);
}
return 0;
}
Expand All @@ -447,7 +447,7 @@ monitor_fprintf(FILE *stream, const char *fmt, ...)

/* Disassembler for the monitor.
See target_disas for a description of flags. */
void monitor_disas(Monitor *mon, CPUArchState *env,
void monitor_disas(Monitor *mon, CPUState *cpu,
target_ulong pc, int nb_insn, int is_physical, int flags)
{
int count, i;
Expand All @@ -456,7 +456,7 @@ void monitor_disas(Monitor *mon, CPUArchState *env,

INIT_DISASSEMBLE_INFO(s.info, (FILE *)mon, monitor_fprintf);

s.env = env;
s.cpu = cpu;
monitor_disas_is_physical = is_physical;
s.info.read_memory_func = monitor_read_memory;
s.info.print_address_func = generic_print_target_address;
Expand Down
4 changes: 2 additions & 2 deletions include/disas/disas.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
#ifdef NEED_CPU_H
/* Disassemble this for me please... (debugging). */
void disas(FILE *out, void *code, unsigned long size);
void target_disas(FILE *out, CPUArchState *env, target_ulong code,
void target_disas(FILE *out, CPUState *cpu, target_ulong code,
target_ulong size, int flags);

void monitor_disas(Monitor *mon, CPUArchState *env,
void monitor_disas(Monitor *mon, CPUState *cpu,
target_ulong pc, int nb_insn, int is_physical, int flags);

/* Look up symbol for debugging purpose. Returns "" if unknown. */
Expand Down
4 changes: 2 additions & 2 deletions include/qemu/log.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,10 @@ static inline void log_cpu_state_mask(int mask, CPUState *cpu, int flags)

#ifdef NEED_CPU_H
/* disas() and target_disas() to qemu_logfile: */
static inline void log_target_disas(CPUArchState *env, target_ulong start,
static inline void log_target_disas(CPUState *cpu, target_ulong start,
target_ulong len, int flags)
{
target_disas(qemu_logfile, env, start, len, flags);
target_disas(qemu_logfile, cpu, start, len, flags);
}

static inline void log_disas(void *code, unsigned long size)
Expand Down
2 changes: 1 addition & 1 deletion monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -1158,7 +1158,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
flags = msr_le << 16;
flags |= env->bfd_mach;
#endif
monitor_disas(mon, mon_get_cpu_env(), addr, count, is_physical, flags);
monitor_disas(mon, mon_get_cpu(), addr, count, is_physical, flags);
return;
}

Expand Down
2 changes: 1 addition & 1 deletion target-alpha/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -2939,7 +2939,7 @@ static inline void gen_intermediate_code_internal(AlphaCPU *cpu,
#ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, ctx.pc - pc_start, 1);
log_target_disas(cs, pc_start, ctx.pc - pc_start, 1);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-arm/translate-a64.c
Original file line number Diff line number Diff line change
Expand Up @@ -11128,7 +11128,7 @@ void gen_intermediate_code_internal_a64(ARMCPU *cpu,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("----------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc->pc - pc_start,
log_target_disas(cs, pc_start, dc->pc - pc_start,
4 | (dc->bswap_code << 1));
qemu_log("\n");
}
Expand Down
2 changes: 1 addition & 1 deletion target-arm/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -11485,7 +11485,7 @@ static inline void gen_intermediate_code_internal(ARMCPU *cpu,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("----------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc->pc - pc_start,
log_target_disas(cs, pc_start, dc->pc - pc_start,
dc->thumb | (dc->bswap_code << 1));
qemu_log("\n");
}
Expand Down
2 changes: 1 addition & 1 deletion target-cris/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -3345,7 +3345,7 @@ gen_intermediate_code_internal(CRISCPU *cpu, TranslationBlock *tb,
#ifdef DEBUG_DISAS
#if !DISAS_CRIS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
log_target_disas(env, pc_start, dc->pc - pc_start,
log_target_disas(cs, pc_start, dc->pc - pc_start,
env->pregs[PR_VR]);
qemu_log("\nisize=%d osize=%d\n",
dc->pc - pc_start, tcg_op_buf_count());
Expand Down
2 changes: 1 addition & 1 deletion target-i386/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -8093,7 +8093,7 @@ static inline void gen_intermediate_code_internal(X86CPU *cpu,
else
#endif
disas_flags = !dc->code32;
log_target_disas(env, pc_start, pc_ptr - pc_start, disas_flags);
log_target_disas(cs, pc_start, pc_ptr - pc_start, disas_flags);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-lm32/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1168,7 +1168,7 @@ void gen_intermediate_code_internal(LM32CPU *cpu,
#ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("\n");
log_target_disas(env, pc_start, dc->pc - pc_start, 0);
log_target_disas(cs, pc_start, dc->pc - pc_start, 0);
qemu_log("\nisize=%d osize=%d\n",
dc->pc - pc_start, tcg_op_buf_count());
}
Expand Down
2 changes: 1 addition & 1 deletion target-m68k/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -3077,7 +3077,7 @@ gen_intermediate_code_internal(M68kCPU *cpu, TranslationBlock *tb,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("----------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc->pc - pc_start, 0);
log_target_disas(cs, pc_start, dc->pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-microblaze/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1851,7 +1851,7 @@ gen_intermediate_code_internal(MicroBlazeCPU *cpu, TranslationBlock *tb,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("\n");
#if DISAS_GNU
log_target_disas(env, pc_start, dc->pc - pc_start, 0);
log_target_disas(cs, pc_start, dc->pc - pc_start, 0);
#endif
qemu_log("\nisize=%d osize=%d\n",
dc->pc - pc_start, tcg_op_buf_count());
Expand Down
2 changes: 1 addition & 1 deletion target-mips/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -19558,7 +19558,7 @@ gen_intermediate_code_internal(MIPSCPU *cpu, TranslationBlock *tb,
LOG_DISAS("\n");
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, ctx.pc - pc_start, 0);
log_target_disas(cs, pc_start, ctx.pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-openrisc/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1770,7 +1770,7 @@ static inline void gen_intermediate_code_internal(OpenRISCCPU *cpu,
#ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("\n");
log_target_disas(&cpu->env, pc_start, dc->pc - pc_start, 0);
log_target_disas(cs, pc_start, dc->pc - pc_start, 0);
qemu_log("\nisize=%d osize=%d\n",
dc->pc - pc_start, tcg_op_buf_count());
}
Expand Down
2 changes: 1 addition & 1 deletion target-ppc/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -11607,7 +11607,7 @@ static inline void gen_intermediate_code_internal(PowerPCCPU *cpu,
flags = env->bfd_mach;
flags |= ctx.le_mode << 16;
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, ctx.nip - pc_start, flags);
log_target_disas(cs, pc_start, ctx.nip - pc_start, flags);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-s390x/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -5446,7 +5446,7 @@ static inline void gen_intermediate_code_internal(S390CPU *cpu,
#if defined(S390X_DEBUG_DISAS)
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc.pc - pc_start, 1);
log_target_disas(cs, pc_start, dc.pc - pc_start, 1);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-sh4/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1961,7 +1961,7 @@ gen_intermediate_code_internal(SuperHCPU *cpu, TranslationBlock *tb,
#ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("IN:\n"); /* , lookup_symbol(pc_start)); */
log_target_disas(env, pc_start, ctx.pc - pc_start, 0);
log_target_disas(cs, pc_start, ctx.pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-sparc/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -5334,7 +5334,7 @@ static inline void gen_intermediate_code_internal(SPARCCPU *cpu,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("--------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, last_pc + 4 - pc_start, 0);
log_target_disas(cs, pc_start, last_pc + 4 - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-tricore/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -8324,7 +8324,7 @@ gen_intermediate_code_internal(TriCoreCPU *cpu, struct TranslationBlock *tb,
#ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, ctx.pc - pc_start, 0);
log_target_disas(cs, pc_start, ctx.pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-unicore32/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -2039,7 +2039,7 @@ static inline void gen_intermediate_code_internal(UniCore32CPU *cpu,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("----------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc->pc - pc_start, 0);
log_target_disas(cs, pc_start, dc->pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion target-xtensa/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -3138,7 +3138,7 @@ void gen_intermediate_code_internal(XtensaCPU *cpu,
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
qemu_log("----------------\n");
qemu_log("IN: %s\n", lookup_symbol(pc_start));
log_target_disas(env, pc_start, dc.pc - pc_start, 0);
log_target_disas(cs, pc_start, dc.pc - pc_start, 0);
qemu_log("\n");
}
#endif
Expand Down

0 comments on commit d49190c

Please sign in to comment.