Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> --- target-alpha/translate.c | 1 + target-arm/translate.c | 1 + target-cris/translate.c | 1 + target-i386/translate.c | 1 + target-lm32/translate.c | 1 + target-m68k/translate.c | 1 + target-microblaze/translate.c | 1 + target-mips/translate.c | 1 + target-ppc/translate.c | 1 + target-s390x/translate.c | 1 + target-sh4/translate.c | 1 + target-sparc/translate.c | 1 + target-unicore32/translate.c | 1 + target-xtensa/translate.c | 1 + trace-events | 13 +++++++++++++ 15 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/target-alpha/translate.c b/target-alpha/translate.c index a961159..18f5428 100644 --- a/target-alpha/translate.c +++ b/target-alpha/translate.c @@ -3368,6 +3368,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-arm/translate.c b/target-arm/translate.c index 0f35b60..b0b36f3 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -9877,6 +9877,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); tcg_clear_temp_count(); diff --git a/target-cris/translate.c b/target-cris/translate.c index a871e7f..cac22c9 100644 --- a/target-cris/translate.c +++ b/target-cris/translate.c @@ -3266,6 +3266,7 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { check_breakpoint(env, dc); diff --git a/target-i386/translate.c b/target-i386/translate.c index 1ef8d16..7192ce9 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -7797,6 +7797,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); for(;;) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-lm32/translate.c b/target-lm32/translate.c index 0be105d..2535fb7 100644 --- a/target-lm32/translate.c +++ b/target-lm32/translate.c @@ -1053,6 +1053,7 @@ static void gen_intermediate_code_internal(CPUState *env, } gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { check_breakpoint(env, dc); diff --git a/target-m68k/translate.c b/target-m68k/translate.c index fe750e2..9cb8139 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -2990,6 +2990,7 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { pc_offset = dc->pc - pc_start; gen_throws_exception = NULL; diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c index f976311..6b6a593 100644 --- a/target-microblaze/translate.c +++ b/target-microblaze/translate.c @@ -1658,6 +1658,7 @@ gen_intermediate_code_internal(CPUState *env, TranslationBlock *tb, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { #if SIM_COMPAT diff --git a/target-mips/translate.c b/target-mips/translate.c index 73c4c5e..0076058 100644 --- a/target-mips/translate.c +++ b/target-mips/translate.c @@ -12414,6 +12414,7 @@ gen_intermediate_code_internal (CPUState *env, TranslationBlock *tb, max_insns = CF_COUNT_MASK; LOG_DISAS("\ntb %p idx %d hflags %04x\n", tb, ctx.mem_idx, ctx.hflags); gen_icount_start(); + gen_helper_trace_vbbl(pc_start); while (ctx.bstate == BS_NONE) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-ppc/translate.c b/target-ppc/translate.c index 66eae30..af78360 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -9463,6 +9463,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); /* Set env in case of segfault during code fetch */ while (ctx.exception == POWERPC_EXCP_NONE && gen_opc_ptr < gen_opc_end) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { diff --git a/target-s390x/translate.c b/target-s390x/translate.c index 9fef77c..c2a04a5 100644 --- a/target-s390x/translate.c +++ b/target-s390x/translate.c @@ -5147,6 +5147,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, } gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { diff --git a/target-sh4/translate.c b/target-sh4/translate.c index 2487451..d75c065 100644 --- a/target-sh4/translate.c +++ b/target-sh4/translate.c @@ -1968,6 +1968,7 @@ gen_intermediate_code_internal(CPUState * env, TranslationBlock * tb, if (max_insns == 0) max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); while (ctx.bstate == BS_NONE && gen_opc_ptr < gen_opc_end) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-sparc/translate.c b/target-sparc/translate.c index d261112..415d996 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -5268,6 +5268,7 @@ static inline void gen_intermediate_code_internal(TranslationBlock * tb, if (max_insns == 0) max_insns = CF_COUNT_MASK; gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-unicore32/translate.c b/target-unicore32/translate.c index 4d0aa43..8edca98 100644 --- a/target-unicore32/translate.c +++ b/target-unicore32/translate.c @@ -1888,6 +1888,7 @@ static inline void gen_intermediate_code_internal(CPUState *env, } gen_icount_start(); + gen_helper_trace_vbbl(pc_start); do { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) { diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c index 8b9d9ed..3f741ac 100644 --- a/target-xtensa/translate.c +++ b/target-xtensa/translate.c @@ -2434,6 +2434,7 @@ static void gen_intermediate_code_internal( reset_used_window(&dc); gen_icount_start(); + gen_helper_trace_vbbl(pc_start); if (env->singlestep_enabled && env->exception_taken) { env->exception_taken = 0; diff --git a/trace-events b/trace-events index 8278959..6dac6ae 100644 --- a/trace-events +++ b/trace-events @@ -640,3 +640,16 @@ win_helper_retry(uint32_t tl) "tl=%d" vcpu_init(void *vcpu) "%p" # Reset the state of a vCPU vcpu_reset(void *vcpu) "%p" + + +## Guest events + +# Start BBL execution +# +# Note: QEMU's basic blocks do not necessarily finish in a control flow +# instruction. +# +# Targets: all +# +# vaddr : starting virtual address +disable tcg vbbl(uint64_t vaddr) "vaddr=0x%016"PRIx64