[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 6/7] trace: Add event "guest_inst_after"
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 6/7] trace: Add event "guest_inst_after" |
Date: |
Wed, 13 Sep 2017 11:01:39 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 09/10/2017 09:35 AM, Lluís Vilanova wrote:
> Signed-off-by: Lluís Vilanova <address@hidden>
> ---
> accel/tcg/translator.c | 23 ++++++++++++++++++-----
> trace-events | 8 ++++++++
> 2 files changed, 26 insertions(+), 5 deletions(-)
>
> diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
> index d66d601c89..c010aeee45 100644
> --- a/accel/tcg/translator.c
> +++ b/accel/tcg/translator.c
> @@ -35,7 +35,8 @@ void translator_loop_temp_check(DisasContextBase *db)
> void translator_loop(const TranslatorOps *ops, DisasContextBase *db,
> CPUState *cpu, TranslationBlock *tb)
> {
> - target_ulong pc_bbl;
> + target_ulong pc_bbl, pc_insn = 0;
> + bool translated_insn = false;
> int max_insns;
>
> /* Initialize DisasContext */
> @@ -75,10 +76,15 @@ void translator_loop(const TranslatorOps *ops,
> DisasContextBase *db,
> tcg_debug_assert(db->is_jmp == DISAS_NEXT); /* no early exit */
>
> while (true) {
> - target_ulong pc_insn = db->pc_next;
> TCGv_i32 insn_size_tcg = 0;
> int insn_size_opcode_idx;
>
> + /* Tracing after (previous instruction) */
> + if (db->num_insns > 0) {
> + trace_guest_inst_after_tcg(cpu, tcg_ctx.tcg_env, pc_insn);
> + }
How does this differ from "guest_inst"? Why would you need two trace points?
Why are you placing this at the beginning of the while loop rather than the end?
> @@ -164,6 +172,9 @@ void translator_loop(const TranslatorOps *ops,
> DisasContextBase *db,
>
> gen_set_inline_region_begin(tcg_ctx.disas.inline_label);
>
> + if (TRACE_GUEST_INST_AFTER_ENABLED && translated_insn) {
> + trace_guest_inst_after_tcg(cpu, tcg_ctx.tcg_env, pc_insn);
> + }
> if (TRACE_GUEST_BBL_AFTER_ENABLED) {
> trace_guest_bbl_after_tcg(cpu, tcg_ctx.tcg_env, pc_bbl);
> }
I think I'm finally beginning to understand what you're after with your
inlining. But I still think this should be doable in the appropriate opcode
generating functions.
r~
[Qemu-devel] [PATCH 6/7] trace: Add event "guest_inst_after", Lluís Vilanova, 2017/09/10
- Re: [Qemu-devel] [PATCH 6/7] trace: Add event "guest_inst_after",
Richard Henderson <=
[Qemu-devel] [PATCH 7/7] trace: Add event "guest_inst_info_after", Lluís Vilanova, 2017/09/10
Re: [Qemu-devel] [PATCH 0/7] trace: Add guest code events, no-reply, 2017/09/10