From 013978687addfae64dbb8e8a179af10922bd2802 Mon Sep 17 00:00:00 2001 From: Jack Veenstra Date: Mon, 18 May 2009 16:02:07 -0700 Subject: Fix critical bug with emulator tracing where the basic block addresses were wrong. One of the calls to trace_add_insn() was missing a parameter and was passing in garbage. This parameter "is_thumb" is expected to be 0 or 1 and is OR-ed with the basic block address to distinguish ARM and Thumb instruction blocks. --- target-arm/translate.c | 2 +- trace.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target-arm/translate.c b/target-arm/translate.c index ff27d28..87bae82 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -5691,7 +5691,7 @@ static void disas_arm_insn(CPUState * env, DisasContext *s) insn = ldl_code(s->pc); #ifdef CONFIG_TRACE if (tracing) { - trace_add_insn(insn); + trace_add_insn(insn, 0); ticks = get_insn_ticks_arm(insn); gen_helper_traceInsn(); } diff --git a/trace.h b/trace.h index 1134d06..f5b0233 100644 --- a/trace.h +++ b/trace.h @@ -130,7 +130,7 @@ extern void start_tracing(); extern void stop_tracing(); extern void trace_init(const char *filename); extern void trace_bb_start(uint32_t bb_addr); -extern void trace_add_insn_arm(uint32_t insn, int is_thumb); +extern void trace_add_insn(uint32_t insn, int is_thumb); extern void trace_bb_end(); extern int get_insn_ticks_arm(uint32_t insn); -- cgit v1.1