[OE-core] Need arm64/qemu help
Victor Kamensky
kamensky at cisco.com
Tue Mar 20 02:22:32 UTC 2018
On Mon, 19 Mar 2018, Richard Henderson wrote:
> On 03/20/2018 07:24 AM, Victor Kamensky wrote:
>>> target/arm/translate-a64.c:handle_sys() is setting
>>> s->base.is_jmp = DISAS_UPDATE;
>>> which it thinks will end the TB, specifically because system
>>> register writes might do things like unmask interrupts or
>>> otherwise require main loop processing.
>>>
>>> The changes that prompted b29fd33db578dec stopped this working.
>>> I suspect what we want is for the case DISAS_UPDATE in
>>> aarch64_tr_tb_stop() to fall through into DISAS_EXIT, not
>>> DISAS_JUMP. (The AArch32 code gets this right, amazingly.)
>>
>> Peter, thank you. I can confirm that change you suggested
>> like one below, boots fine.
>>
>> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
>> index 625ef2d..c381091 100644
>> --- a/target/arm/translate-a64.c
>> +++ b/target/arm/translate-a64.c
>> @@ -11384,12 +11384,12 @@ static void aarch64_tr_tb_stop(DisasContextBase
>> *dcbase, CPUState *cpu)
>> case DISAS_UPDATE:
>> gen_a64_set_pc_im(dc->pc);
>> /* fall through */
>> - case DISAS_JUMP:
>> - tcg_gen_lookup_and_goto_ptr();
>> - break;
>> case DISAS_EXIT:
>> tcg_gen_exit_tb(0);
>> break;
>> + case DISAS_JUMP:
>> + tcg_gen_lookup_and_goto_ptr();
>> + break;
>> case DISAS_NORETURN:
>> case DISAS_SWI:
>> break;
>
> Alex and I just had a long chat about this, and I think this is the right solution.
>
> (1) It brings aa64 into alignment with aa32 wrt the meaning of these
> enumerators, (2) The only use of DISAS_UPDATE is there in handle_sys, so we're
> not changing the behaviour of any other insns, (3) The most frequent writes to
> system registers -- NZCV and FPCR -- are already special cased so that they
> won't exit the TB.
>
> Reviewed-by: Richard Henderson <richard.henderson at linaro.org>
Thanks, Richard. So how do we go about committing it in qemu tree?
Should I submit the patch or Alex or Peter will do it?
Once fix is in qemu tree I will pick it and submit patch for OE tree
on top of current qemu-2.11.1.
Thanks,
Victor
>
> r~
>
More information about the Openembedded-core
mailing list