mirror of https://gitee.com/openkylin/qemu.git
disas: Remove uses of CPU env
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 <rth@twiddle.net> Cc: Peter Maydell <peter.maydell@linaro.org> Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Michael Walle <michael@walle.cc> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: Leon Alrae <leon.alrae@imgtec.com> Cc: Jia Liu <proljc@gmail.com> Cc: Alexander Graf <agraf@suse.de> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn> Cc: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Richard Henderson <rth@twiddle.net> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Acked-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
5bcda5f734
commit
d49190c420
14
disas.c
14
disas.c
|
@ -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. */
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -11128,7 +11128,7 @@ done_generating:
|
|||
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");
|
||||
}
|
||||
|
|
|
@ -11485,7 +11485,7 @@ done_generating:
|
|||
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");
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -8093,7 +8093,7 @@ done_generating:
|
|||
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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -19558,7 +19558,7 @@ done_generating:
|
|||
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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2039,7 +2039,7 @@ done_generating:
|
|||
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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue