aboutsummaryrefslogtreecommitdiff
path: root/translate-all.c
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2014-08-01 17:08:57 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2014-08-12 14:26:12 +0100
commit6db8b538663b39c21e12e14e6437aa7f8435f316 (patch)
treef18ecd38a421852c997b643bd8b56b720a263f7b /translate-all.c
parent41ef7b00abff4d31814890a14e5a8e49a177508b (diff)
downloadqemu-6db8b538663b39c21e12e14e6437aa7f8435f316.zip
qemu-6db8b538663b39c21e12e14e6437aa7f8435f316.tar.gz
qemu-6db8b538663b39c21e12e14e6437aa7f8435f316.tar.bz2
trace: add some tcg tracing support
This adds a couple of tcg specific trace-events which are useful for tracing execution though tcg generated blocks. It's been tested with lttng user space tracing but is generic enough for all systems. The tcg events are: * translate_block - when a subject block is translated * exec_tb - when a translated block is entered * exec_tb_exit - when we exit the translated code * exec_tb_nocache - special case translations Of course we can only trace the entrance to the first block of a chain as each block will jump directly to the next when it can. See the -d nochain patch to allow more complete tracing at the expense of performance. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'translate-all.c')
-rw-r--r--translate-all.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/translate-all.c b/translate-all.c
index 8f7e11b..2e0265a 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -33,6 +33,7 @@
#include "qemu-common.h"
#define NO_CPU_IO_DEFS
#include "cpu.h"
+#include "trace.h"
#include "disas/disas.h"
#include "tcg.h"
#if defined(CONFIG_USER_ONLY)
@@ -158,6 +159,8 @@ int cpu_gen_code(CPUArchState *env, TranslationBlock *tb, int *gen_code_size_ptr
gen_intermediate_code(env, tb);
+ trace_translate_block(tb, tb->pc, tb->tc_ptr);
+
/* generate machine code */
gen_code_buf = tb->tc_ptr;
tb->tb_next_offset[0] = 0xffff;