[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] RISC-V: fix single stepping over ret and other
From: |
Fabien Chouteau |
Subject: |
Re: [Qemu-devel] [PATCH] RISC-V: fix single stepping over ret and other branching instructions |
Date: |
Mon, 25 Mar 2019 12:48:45 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 |
Thanks Richard,
I sent a version 2.
On 22/03/2019 16:24, Richard Henderson wrote:
> On 3/22/19 4:22 AM, Fabien Chouteau wrote:
>> +/* Wrapper around tcg_gen_exit_tb that handles single stepping */
>> +static void exit_tb(DisasContext *ctx, TranslationBlock *tb, unsigned idx)
>> +{
>> + if (ctx->base.singlestep_enabled) {
>> + gen_exception_debug();
>> + } else {
>> + tcg_gen_exit_tb(tb, idx);
>> + }
>> +}
>
> You should remove the TB and idx parameters here and pass NULL, 0 to
> tcg_gen_exit_tb.
>
>> @@ -138,14 +158,10 @@ static void gen_goto_tb(DisasContext *ctx, int n,
>> target_ulong dest)
>> /* chaining is only allowed when the jump is to the same page */
>> tcg_gen_goto_tb(n);
>> tcg_gen_movi_tl(cpu_pc, dest);
>> - tcg_gen_exit_tb(ctx->base.tb, n);
>> + exit_tb(ctx, ctx->base.tb, n);
>
> Because this is the only non-zero use, and it is already protected by
> use_goto_tb, which includes the single-step check.
>
> Because goto_tb(n) must be paired with exit_tb(tb, n), and vice-versa.
>
>
> r~
>