From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57536) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpKbs-0000fM-8J for qemu-devel@nongnu.org; Thu, 22 Oct 2015 14:29:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZpKbn-0005uY-A7 for qemu-devel@nongnu.org; Thu, 22 Oct 2015 14:29:08 -0400 Received: from mail-lf0-x233.google.com ([2a00:1450:4010:c07::233]:34254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpKbn-0005uU-42 for qemu-devel@nongnu.org; Thu, 22 Oct 2015 14:29:03 -0400 Received: by lfaz124 with SMTP id z124so58303380lfa.1 for ; Thu, 22 Oct 2015 11:29:02 -0700 (PDT) From: Sergey Fedorov Message-ID: <56292AEA.3010408@gmail.com> Date: Thu, 22 Oct 2015 21:28:58 +0300 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] exec: About DISAS_JUMP and DISAS_UPDATE List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Paolo Bonzini , Peter Crosthwaite , Aurelien Jarno , Richard Henderson 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. Best regards, Sergey