qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] exec: About DISAS_JUMP and DISAS_UPDATE


From: Richard Henderson
Subject: Re: [Qemu-devel] exec: About DISAS_JUMP and DISAS_UPDATE
Date: Thu, 22 Oct 2015 09:50:41 -1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 10/22/2015 08:28 AM, Sergey Fedorov wrote:
Hi all,

I am trying to understand what the difference should be between
DISAS_JUMP and DISAS_UPDATE. Actually, these macros have comments in
include/exec/exec-all.h which say that DISAS_JUMP should be used when
only PC was modified dynamically whereas DISAS_UPDATE should be used
when some other CPU state was (in addition to PC?) modified dynamically.
In fact, every target except ARM AArch64 does not distinguish between
them. As I can see ARM AArch64 seems to suppose that: (1) PC was not
modified when DISAS_UPDATE is used and should be updated with dc->pc
when finishing translation; (2) DISAS_JUMP can be used to indicate that
a new PC value was set and it should be preserved when finishing
translation.

So I'm a bit confused... What the difference should be? Maybe something
should be fixed/clarified to make the comments and the code consistent.

It's a mistake that these are defined in exec/. They ought to be totally private to each translator. See e.g. ExitStatus in target-alpha/translate.c.

But yes, what you see in aarch64 is approximately what is intended.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]