accel/tcg: Provide default implementation of disas_log
Almost all of the disas_log implementations are identical. Unify them within translator_loop. Drop extra Priv/Virt logging from target/riscv. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
34e5e1dde5
commit
962a145cdc
@ -17,6 +17,7 @@
|
||||
#include "exec/cpu_ldst.h"
|
||||
#include "tcg/tcg-op-common.h"
|
||||
#include "internal-target.h"
|
||||
#include "disas/disas.h"
|
||||
|
||||
static void set_can_do_io(DisasContextBase *db, bool val)
|
||||
{
|
||||
@ -226,7 +227,13 @@ void translator_loop(CPUState *cpu, TranslationBlock *tb, int *max_insns,
|
||||
FILE *logfile = qemu_log_trylock();
|
||||
if (logfile) {
|
||||
fprintf(logfile, "----------------\n");
|
||||
ops->disas_log(db, cpu, logfile);
|
||||
|
||||
if (ops->disas_log) {
|
||||
ops->disas_log(db, cpu, logfile);
|
||||
} else {
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(db->pc_first));
|
||||
target_disas(logfile, cpu, db->pc_first, db->tb->size);
|
||||
}
|
||||
fprintf(logfile, "\n");
|
||||
qemu_log_unlock(logfile);
|
||||
}
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "sysemu/cpus.h"
|
||||
#include "disas/disas.h"
|
||||
#include "qemu/host-utils.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
@ -2947,20 +2946,12 @@ static void alpha_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void alpha_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
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 = {
|
||||
.init_disas_context = alpha_tr_init_disas_context,
|
||||
.tb_start = alpha_tr_tb_start,
|
||||
.insn_start = alpha_tr_insn_start,
|
||||
.translate_insn = alpha_tr_translate_insn,
|
||||
.tb_stop = alpha_tr_tb_stop,
|
||||
.disas_log = alpha_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "translate.h"
|
||||
#include "translate-a64.h"
|
||||
#include "qemu/log.h"
|
||||
#include "disas/disas.h"
|
||||
#include "arm_ldst.h"
|
||||
#include "semihosting/semihost.h"
|
||||
#include "cpregs.h"
|
||||
@ -14382,20 +14381,10 @@ static void aarch64_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void aarch64_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
DisasContext *dc = container_of(dcbase, DisasContext, base);
|
||||
|
||||
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 = {
|
||||
.init_disas_context = aarch64_tr_init_disas_context,
|
||||
.tb_start = aarch64_tr_tb_start,
|
||||
.insn_start = aarch64_tr_insn_start,
|
||||
.translate_insn = aarch64_tr_translate_insn,
|
||||
.tb_stop = aarch64_tr_tb_stop,
|
||||
.disas_log = aarch64_tr_disas_log,
|
||||
};
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "translate.h"
|
||||
#include "translate-a32.h"
|
||||
#include "qemu/log.h"
|
||||
#include "disas/disas.h"
|
||||
#include "arm_ldst.h"
|
||||
#include "semihosting/semihost.h"
|
||||
#include "cpregs.h"
|
||||
@ -9663,22 +9662,12 @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void arm_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
DisasContext *dc = container_of(dcbase, DisasContext, base);
|
||||
|
||||
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 = {
|
||||
.init_disas_context = arm_tr_init_disas_context,
|
||||
.tb_start = arm_tr_tb_start,
|
||||
.insn_start = arm_tr_insn_start,
|
||||
.translate_insn = arm_tr_translate_insn,
|
||||
.tb_stop = arm_tr_tb_stop,
|
||||
.disas_log = arm_tr_disas_log,
|
||||
};
|
||||
|
||||
static const TranslatorOps thumb_translator_ops = {
|
||||
@ -9687,7 +9676,6 @@ static const TranslatorOps thumb_translator_ops = {
|
||||
.insn_start = arm_tr_insn_start,
|
||||
.translate_insn = thumb_tr_translate_insn,
|
||||
.tb_stop = arm_tr_tb_stop,
|
||||
.disas_log = arm_tr_disas_log,
|
||||
};
|
||||
|
||||
/* generate intermediate code for basic block 'tb'. */
|
||||
|
@ -2787,20 +2787,12 @@ static void avr_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void avr_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cs, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps avr_tr_ops = {
|
||||
.init_disas_context = avr_tr_init_disas_context,
|
||||
.tb_start = avr_tr_tb_start,
|
||||
.insn_start = avr_tr_insn_start,
|
||||
.translate_insn = avr_tr_translate_insn,
|
||||
.tb_stop = avr_tr_tb_stop,
|
||||
.disas_log = avr_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -25,7 +25,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "exec/helper-proto.h"
|
||||
@ -3148,22 +3147,12 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void cris_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
if (!DISAS_CRIS) {
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
}
|
||||
|
||||
static const TranslatorOps cris_tr_ops = {
|
||||
.init_disas_context = cris_tr_init_disas_context,
|
||||
.tb_start = cris_tr_tb_start,
|
||||
.insn_start = cris_tr_insn_start,
|
||||
.translate_insn = cris_tr_translate_insn,
|
||||
.tb_stop = cris_tr_tb_stop,
|
||||
.disas_log = cris_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -1076,21 +1076,12 @@ static void hexagon_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void hexagon_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
|
||||
static const TranslatorOps hexagon_tr_ops = {
|
||||
.init_disas_context = hexagon_tr_init_disas_context,
|
||||
.tb_start = hexagon_tr_tb_start,
|
||||
.insn_start = hexagon_tr_insn_start,
|
||||
.translate_insn = hexagon_tr_translate_packet,
|
||||
.tb_stop = hexagon_tr_tb_stop,
|
||||
.disas_log = hexagon_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -4816,12 +4816,12 @@ static void hppa_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
static void hppa_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
target_ulong pc = dcbase->pc_first;
|
||||
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
switch (pc) {
|
||||
case 0x00:
|
||||
fprintf(logfile, "IN:\n0x00000000: (null)\n");
|
||||
@ -4836,11 +4836,11 @@ static void hppa_tr_disas_log(const DisasContextBase *dcbase,
|
||||
fprintf(logfile, "IN:\n0x00000100: syscall\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(pc));
|
||||
target_disas(logfile, cs, pc, dcbase->tb->size);
|
||||
}
|
||||
#endif
|
||||
|
||||
static const TranslatorOps hppa_tr_ops = {
|
||||
.init_disas_context = hppa_tr_init_disas_context,
|
||||
@ -4848,7 +4848,9 @@ static const TranslatorOps hppa_tr_ops = {
|
||||
.insn_start = hppa_tr_insn_start,
|
||||
.translate_insn = hppa_tr_translate_insn,
|
||||
.tb_stop = hppa_tr_tb_stop,
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
.disas_log = hppa_tr_disas_log,
|
||||
#endif
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "qemu/host-utils.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "tcg/tcg-op-gvec.h"
|
||||
@ -4798,22 +4797,12 @@ static void i386_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void i386_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
DisasContext *dc = container_of(dcbase, DisasContext, base);
|
||||
|
||||
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 i386_tr_ops = {
|
||||
.init_disas_context = i386_tr_init_disas_context,
|
||||
.tb_start = i386_tr_tb_start,
|
||||
.insn_start = i386_tr_insn_start,
|
||||
.translate_insn = i386_tr_translate_insn,
|
||||
.tb_stop = i386_tr_tb_stop,
|
||||
.disas_log = i386_tr_disas_log,
|
||||
};
|
||||
|
||||
/* generate intermediate code for basic block 'tb'. */
|
||||
|
@ -325,20 +325,12 @@ static void loongarch_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void loongarch_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
qemu_log("IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps loongarch_tr_ops = {
|
||||
.init_disas_context = loongarch_tr_init_disas_context,
|
||||
.tb_start = loongarch_tr_tb_start,
|
||||
.insn_start = loongarch_tr_insn_start,
|
||||
.translate_insn = loongarch_tr_translate_insn,
|
||||
.tb_stop = loongarch_tr_tb_stop,
|
||||
.disas_log = loongarch_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "qemu/log.h"
|
||||
@ -6105,20 +6104,12 @@ static void m68k_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void m68k_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps m68k_tr_ops = {
|
||||
.init_disas_context = m68k_tr_init_disas_context,
|
||||
.tb_start = m68k_tr_tb_start,
|
||||
.insn_start = m68k_tr_insn_start,
|
||||
.translate_insn = m68k_tr_translate_insn,
|
||||
.tb_stop = m68k_tr_tb_stop,
|
||||
.disas_log = m68k_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "exec/cpu_ldst.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
@ -1772,20 +1771,12 @@ static void mb_tr_tb_stop(DisasContextBase *dcb, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void mb_tr_disas_log(const DisasContextBase *dcb,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcb->pc_first));
|
||||
target_disas(logfile, cs, dcb->pc_first, dcb->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps mb_tr_ops = {
|
||||
.init_disas_context = mb_tr_init_disas_context,
|
||||
.tb_start = mb_tr_tb_start,
|
||||
.insn_start = mb_tr_insn_start,
|
||||
.translate_insn = mb_tr_translate_insn,
|
||||
.tb_stop = mb_tr_tb_stop,
|
||||
.disas_log = mb_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include "exec/translation-block.h"
|
||||
#include "semihosting/semihost.h"
|
||||
#include "trace.h"
|
||||
#include "disas/disas.h"
|
||||
#include "fpu_helper.h"
|
||||
|
||||
#define HELPER_H "helper.h"
|
||||
@ -15475,20 +15474,12 @@ static void mips_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void mips_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cs, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps mips_tr_ops = {
|
||||
.init_disas_context = mips_tr_init_disas_context,
|
||||
.tb_start = mips_tr_tb_start,
|
||||
.insn_start = mips_tr_insn_start,
|
||||
.translate_insn = mips_tr_translate_insn,
|
||||
.tb_stop = mips_tr_tb_stop,
|
||||
.disas_log = mips_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "disas/disas.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "qemu/log.h"
|
||||
#include "qemu/bitops.h"
|
||||
@ -1638,22 +1637,12 @@ static void openrisc_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void openrisc_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
DisasContext *s = container_of(dcbase, DisasContext, base);
|
||||
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(s->base.pc_first));
|
||||
target_disas(logfile, cs, s->base.pc_first, s->base.tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps openrisc_tr_ops = {
|
||||
.init_disas_context = openrisc_tr_init_disas_context,
|
||||
.tb_start = openrisc_tr_tb_start,
|
||||
.insn_start = openrisc_tr_insn_start,
|
||||
.translate_insn = openrisc_tr_translate_insn,
|
||||
.tb_stop = openrisc_tr_tb_stop,
|
||||
.disas_log = openrisc_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "internal.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "tcg/tcg-op-gvec.h"
|
||||
@ -7405,20 +7404,12 @@ static void ppc_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void ppc_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cs, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps ppc_tr_ops = {
|
||||
.init_disas_context = ppc_tr_init_disas_context,
|
||||
.tb_start = ppc_tr_tb_start,
|
||||
.insn_start = ppc_tr_insn_start,
|
||||
.translate_insn = ppc_tr_translate_insn,
|
||||
.tb_stop = ppc_tr_tb_stop,
|
||||
.disas_log = ppc_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "qemu/log.h"
|
||||
#include "cpu.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/cpu_ldst.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "exec/helper-proto.h"
|
||||
@ -1270,29 +1269,12 @@ static void riscv_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void riscv_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
RISCVCPU *rvcpu = RISCV_CPU(cpu);
|
||||
CPURISCVState *env = &rvcpu->env;
|
||||
#endif
|
||||
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
fprintf(logfile, "Priv: "TARGET_FMT_ld"; Virt: %d\n",
|
||||
env->priv, env->virt_enabled);
|
||||
#endif
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps riscv_tr_ops = {
|
||||
.init_disas_context = riscv_tr_init_disas_context,
|
||||
.tb_start = riscv_tr_tb_start,
|
||||
.insn_start = riscv_tr_insn_start,
|
||||
.translate_insn = riscv_tr_translate_insn,
|
||||
.tb_stop = riscv_tr_tb_stop,
|
||||
.disas_log = riscv_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -2247,20 +2247,12 @@ static void rx_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void rx_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cs, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps rx_tr_ops = {
|
||||
.init_disas_context = rx_tr_init_disas_context,
|
||||
.tb_start = rx_tr_tb_start,
|
||||
.insn_start = rx_tr_insn_start,
|
||||
.translate_insn = rx_tr_translate_insn,
|
||||
.tb_stop = rx_tr_tb_stop,
|
||||
.disas_log = rx_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "exec/helper-proto.h"
|
||||
@ -2310,20 +2309,12 @@ static void sh4_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void sh4_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cs, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cs, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps sh4_tr_ops = {
|
||||
.init_disas_context = sh4_tr_init_disas_context,
|
||||
.tb_start = sh4_tr_tb_start,
|
||||
.insn_start = sh4_tr_insn_start,
|
||||
.translate_insn = sh4_tr_translate_insn,
|
||||
.tb_stop = sh4_tr_tb_stop,
|
||||
.disas_log = sh4_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/helper-proto.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
@ -5149,20 +5148,12 @@ static void sparc_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
static void sparc_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps sparc_tr_ops = {
|
||||
.init_disas_context = sparc_tr_init_disas_context,
|
||||
.tb_start = sparc_tr_tb_start,
|
||||
.insn_start = sparc_tr_insn_start,
|
||||
.translate_insn = sparc_tr_translate_insn,
|
||||
.tb_stop = sparc_tr_tb_stop,
|
||||
.disas_log = sparc_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "cpu.h"
|
||||
#include "disas/disas.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "exec/cpu_ldst.h"
|
||||
@ -8453,20 +8452,12 @@ static void tricore_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void tricore_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps tricore_tr_ops = {
|
||||
.init_disas_context = tricore_tr_init_disas_context,
|
||||
.tb_start = tricore_tr_tb_start,
|
||||
.insn_start = tricore_tr_insn_start,
|
||||
.translate_insn = tricore_tr_translate_insn,
|
||||
.tb_stop = tricore_tr_tb_stop,
|
||||
.disas_log = tricore_tr_disas_log,
|
||||
};
|
||||
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
|
||||
#include "cpu.h"
|
||||
#include "exec/exec-all.h"
|
||||
#include "disas/disas.h"
|
||||
#include "tcg/tcg-op.h"
|
||||
#include "qemu/log.h"
|
||||
#include "qemu/qemu-print.h"
|
||||
@ -1221,20 +1220,12 @@ static void xtensa_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
|
||||
}
|
||||
}
|
||||
|
||||
static void xtensa_tr_disas_log(const DisasContextBase *dcbase,
|
||||
CPUState *cpu, FILE *logfile)
|
||||
{
|
||||
fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
|
||||
target_disas(logfile, cpu, dcbase->pc_first, dcbase->tb->size);
|
||||
}
|
||||
|
||||
static const TranslatorOps xtensa_translator_ops = {
|
||||
.init_disas_context = xtensa_tr_init_disas_context,
|
||||
.tb_start = xtensa_tr_tb_start,
|
||||
.insn_start = xtensa_tr_insn_start,
|
||||
.translate_insn = xtensa_tr_translate_insn,
|
||||
.tb_stop = xtensa_tr_tb_stop,
|
||||
.disas_log = xtensa_tr_disas_log,
|
||||
};
|
||||
|
||||
void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
|
||||
|
Loading…
Reference in New Issue
Block a user