Re: [PATCH v2 12/39] exec/translator: Pass the locked filepointer to disas_log hook

2022-04-13 Thread Alex Bennée


Richard Henderson  writes:

> We have fetched and locked the logfile in translator_loop.
> Pass the filepointer down to the disas_log hook so that it
> need not be fetched and locked again.
>
> Signed-off-by: Richard Henderson 

Reviewed-by: Alex Bennée 

-- 
Alex Bennée



[PATCH v2 12/39] exec/translator: Pass the locked filepointer to disas_log hook

2022-03-26 Thread Richard Henderson
We have fetched and locked the logfile in translator_loop.
Pass the filepointer down to the disas_log hook so that it
need not be fetched and locked again.

Signed-off-by: Richard Henderson 
---
 include/exec/translator.h |  2 +-
 accel/tcg/translator.c|  2 +-
 target/alpha/translate.c  |  7 ---
 target/arm/translate-a64.c|  6 +++---
 target/arm/translate.c|  7 ---
 target/avr/translate.c|  7 ---
 target/cris/translate.c   |  7 ---
 target/hexagon/translate.c|  7 ---
 target/hppa/translate.c   | 15 ---
 target/i386/tcg/translate.c   |  6 +++---
 target/m68k/translate.c   |  7 ---
 target/microblaze/translate.c |  7 ---
 target/mips/tcg/translate.c   |  7 ---
 target/nios2/translate.c  |  7 ---
 target/openrisc/translate.c   |  7 ---
 target/ppc/translate.c|  7 ---
 target/riscv/translate.c  | 10 ++
 target/rx/translate.c |  7 ---
 target/s390x/tcg/translate.c  | 11 ++-
 target/sh4/translate.c|  7 ---
 target/sparc/translate.c  |  7 ---
 target/tricore/translate.c|  7 ---
 target/xtensa/translate.c |  7 ---
 23 files changed, 92 insertions(+), 72 deletions(-)

diff --git a/include/exec/translator.h b/include/exec/translator.h
index 9bc46eda59..31d3fa76ff 100644
--- a/include/exec/translator.h
+++ b/include/exec/translator.h
@@ -118,7 +118,7 @@ typedef struct TranslatorOps {
 void (*insn_start)(DisasContextBase *db, CPUState *cpu);
 void (*translate_insn)(DisasContextBase *db, CPUState *cpu);
 void (*tb_stop)(DisasContextBase *db, CPUState *cpu);
-void (*disas_log)(const DisasContextBase *db, CPUState *cpu);
+void (*disas_log)(const DisasContextBase *db, CPUState *cpu, FILE *f);
 } TranslatorOps;
 
 /**
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
index af8798f98b..fe7af9b943 100644
--- a/accel/tcg/translator.c
+++ b/accel/tcg/translator.c
@@ -142,7 +142,7 @@ void translator_loop(const TranslatorOps *ops, 
DisasContextBase *db,
 FILE *logfile = qemu_log_trylock();
 if (logfile) {
 fprintf(logfile, "\n");
-ops->disas_log(db, cpu);
+ops->disas_log(db, cpu, logfile);
 fprintf(logfile, "\n");
 qemu_log_unlock(logfile);
 }
diff --git a/target/alpha/translate.c b/target/alpha/translate.c
index 66768ab47a..b1f78cff53 100644
--- a/target/alpha/translate.c
+++ b/target/alpha/translate.c
@@ -3027,10 +3027,11 @@ static void alpha_tr_tb_stop(DisasContextBase *dcbase, 
CPUState *cpu)
 }
 }
 
-static void alpha_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu)
+static void alpha_tr_disas_log(const DisasContextBase *dcbase,
+   CPUState *cpu, FILE *logfile)
 {
-qemu_log("IN: %s\n", lookup_symbol(dcbase->pc_first));
-log_target_disas(cpu, dcbase->pc_first, dcbase->tb->size);
+fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
+target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
 }
 
 static const TranslatorOps alpha_tr_ops = {
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index d1a59fad9c..87ae8b7571 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -14962,12 +14962,12 @@ static void aarch64_tr_tb_stop(DisasContextBase 
*dcbase, CPUState *cpu)
 }
 
 static void aarch64_tr_disas_log(const DisasContextBase *dcbase,
-  CPUState *cpu)
+ CPUState *cpu, FILE *logfile)
 {
 DisasContext *dc = container_of(dcbase, DisasContext, base);
 
-qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first));
-log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size);
+fprintf(logfile, "IN: %s\n", lookup_symbol(dc->base.pc_first));
+target_disas(logfile, cpu, dc->base.pc_first, dc->base.tb->size);
 }
 
 const TranslatorOps aarch64_translator_ops = {
diff --git a/target/arm/translate.c b/target/arm/translate.c
index bf2196b9e2..783a43b4ae 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -9891,12 +9891,13 @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, 
CPUState *cpu)
 }
 }
 
-static void arm_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu)
+static void arm_tr_disas_log(const DisasContextBase *dcbase,
+ CPUState *cpu, FILE *logfile)
 {
 DisasContext *dc = container_of(dcbase, DisasContext, base);
 
-qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first));
-log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size);
+fprintf(logfile, "IN: %s\n", lookup_symbol(dc->base.pc_first));
+target_disas(logfile, cpu, dc->base.pc_first, dc->base.tb->size);
 }
 
 static const TranslatorOps arm_translator_ops = {
diff --git a/target/avr/translate.c b/target/avr/translate.c
index af8a3e0f9c..dc9c3d6bcc 100644
--- a/target/avr/translate.c
+++