diff options
author | Alex Bennée <alex.bennee@linaro.org> | 2014-08-01 17:08:57 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2014-08-12 14:26:12 +0100 |
commit | 6db8b538663b39c21e12e14e6437aa7f8435f316 (patch) | |
tree | f18ecd38a421852c997b643bd8b56b720a263f7b /translate-all.c | |
parent | 41ef7b00abff4d31814890a14e5a8e49a177508b (diff) | |
download | qemu-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.c | 3 |
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; |