From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DSHWL-0004bS-VC for qemu-devel@nongnu.org; Sun, 01 May 2005 12:42:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DSHWK-0004aq-PW for qemu-devel@nongnu.org; Sun, 01 May 2005 12:42:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DSHQo-00020j-HK for qemu-devel@nongnu.org; Sun, 01 May 2005 12:36:34 -0400 Received: from [199.232.41.67] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_ARCFOUR_SHA:16) (Exim 4.34) id 1DSHG5-00066Q-0w for qemu-devel@nongnu.org; Sun, 01 May 2005 12:25:29 -0400 Received: from [213.146.154.40] (helo=pentafluge.infradead.org) by mx20.gnu.org with esmtp (Exim 4.34) id 1DRpxR-00012f-DI for qemu-devel@nongnu.org; Sat, 30 Apr 2005 07:16:32 -0400 From: David Woodhouse Content-Type: text/plain Date: Sat, 30 Apr 2005 12:10:16 +0100 Message-Id: <1114859417.24014.59.camel@localhost.localdomain> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH] Fix dyngen failure on PPC. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard Cc: qemu-devel@nongnu.org GCC 4 occasionally generates functions with the 'blr' somewhere in the middle and a branch at the end. --- qemu-0.7.0/dyngen.c.orig 2005-04-30 11:59:05.000000000 +0100 +++ qemu-0.7.0/dyngen.c 2005-04-30 12:00:11.000000000 +0100 @@ -1396,11 +1395,13 @@ void gen_code(const char *name, host_ulo #elif defined(HOST_PPC) { uint8_t *p; + uint32_t insn; p = (void *)(p_end - 4); if (p == p_start) error("empty code for %s", name); - if (get32((uint32_t *)p) != 0x4e800020) - error("blr expected at the end of %s", name); + insn = get32((uint32_t *)p); + if (insn != 0x4e800020 && (insn & 0xfc000002) != 0x48000000) + error("blr or b expected at the end of %s", name); copy_size = p - p_start; } #elif defined(HOST_S390) -- dwmw2