From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O4Gv3-0008Ia-9A for qemu-devel@nongnu.org; Tue, 20 Apr 2010 13:07:29 -0400 Received: from [140.186.70.92] (port=34510 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4Gv0-0008GL-NX for qemu-devel@nongnu.org; Tue, 20 Apr 2010 13:07:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O4Guy-0007m0-HR for qemu-devel@nongnu.org; Tue, 20 Apr 2010 13:07:26 -0400 Received: from mail-pw0-f45.google.com ([209.85.160.45]:60906) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O4Guy-0007lo-Cu for qemu-devel@nongnu.org; Tue, 20 Apr 2010 13:07:24 -0400 Received: by pwi6 with SMTP id 6so4074663pwi.4 for ; Tue, 20 Apr 2010 10:07:23 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: Date: Tue, 20 Apr 2010 20:07:23 +0300 Message-ID: From: Blue Swirl Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] Re: sparc: potentially incorrect if dynamic npc? List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Artyom Tarasenko Cc: qemu-devel On 4/20/10, Artyom Tarasenko wrote: > 2010/4/20 Blue Swirl : > > > On 4/20/10, Artyom Tarasenko wrote: > >> /* XXX: potentially incorrect if dynamic npc */ > >> static void do_branch > >> > >> There are few comments like this in target-sparc/translate.c . > >> In what case is it incorrect? > >> > >> Can do_branch functions be called with dynamic npc? > > > > Maybe, if there are two branches or jumps in a row. The last time I > > checked, at least for successive branches we do the correct thing. > > It's pretty obscure, no compiler will generate such sequences and > > nobody with asm skills either. > > > Why not? That's how you can implement a very compact 'case' > operator in asm. It is used in OBP. > > But you are right, this seems to work (at least with ss-5 and > ss-20 OBP). > > > > Another corner case that IIRC we don't handle is where a jump > > instruction is at the end of the page and its delay slot instruction > > is at next page. > > > Do you mean that npc is dynamic in this case, or that if > npc is dynamic and the instruction is at the end of the page we have > a problem? The problem is with code generation in general (delay slot instruction gets translated effectively before the branch), could be related to dynamic npc too but the branch could be bn or ba as well.