[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v3 4/6] target/arm/translate: ensure gen_goto_tb s
From: |
Alex Bennée |
Subject: |
Re: [Qemu-arm] [PATCH v3 4/6] target/arm/translate: ensure gen_goto_tb sets exit flags |
Date: |
Tue, 11 Jul 2017 20:20:31 +0100 |
User-agent: |
mu4e 0.9.19; emacs 25.2.50.3 |
Richard Henderson <address@hidden> writes:
> On 07/11/2017 07:59 AM, Alex Bennée wrote:
>> if (use_goto_tb(s, dest)) {
>> tcg_gen_goto_tb(n);
>> gen_set_pc_im(s, dest);
>> tcg_gen_exit_tb((uintptr_t)s->tb + n);
>> + s->is_jmp = DISAS_TB_JUMP;
>> } else {
>> gen_set_pc_im(s, dest);
>> gen_goto_ptr();
>> + s->is_jmp = DISAS_JUMP;
>> }
>
> I think DISAS_TB_JUMP is appropriate for both cases. When not using
> goto_tb, the jump is still static and we still chain to the next TB
> via goto_ptr.
OK - I guess we need to nail down what the essential difference is
between the two. I understood DISAS_TB_JUMP as a static known PC which
can be patched in the generated code because we know the two addresses
are in the same page - whereas DISAS_JUMP is a "computed" jump although
in this case the PC is already known.
Does making a distinction between computed and non-computer inter-page
jumps make any sense anyway?
>
> Otherwise,
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>
> r~
--
Alex Bennée