From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K9EoR-0001jc-0s for qemu-devel@nongnu.org; Thu, 19 Jun 2008 03:44:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K9EoO-0001gu-4t for qemu-devel@nongnu.org; Thu, 19 Jun 2008 03:44:05 -0400 Received: from [199.232.76.173] (port=36729 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K9EoN-0001gf-Gh for qemu-devel@nongnu.org; Thu, 19 Jun 2008 03:44:03 -0400 Received: from server1linux.rebelnetworks.com ([66.135.44.167]:45207) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K9EoM-0001DO-My for qemu-devel@nongnu.org; Thu, 19 Jun 2008 03:44:02 -0400 From: Julian Seward Subject: Re: [Qemu-devel] [PATCH] ppc32 guests: fix computation of XER.{CA, OV} in addme, subfme, mullwo Date: Thu, 19 Jun 2008 09:36:58 +0200 References: <200805110204.47184.jseward@acm.org> <200806180006.51954.jseward@acm.org> <2CD863BB-B874-483E-8FF3-63952C6FAD5D@adacore.com> In-Reply-To: <2CD863BB-B874-483E-8FF3-63952C6FAD5D@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200806190936.58201.jseward@acm.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Tristan Gingold Cc: qemu-devel@nongnu.org > > addme 00000000 XER.CA=1 = 00000000 (cr 00000000 xer 20000000) > > Did I miss the obvious, but why does 0 + 1 - 1 generate a carry ? Because (as per the docs) it's computing rA + XER.CA + 0xFFFF_FFFF, which is 0 + 1 + 0xFFFF_FFFF == 0x1_0000_0000. Which does indeed carry. I tested now on both a 7447 and a G5 and they both do that. On a real 7447: mullwo. 000f423f ffffffff = fff0bdc1 (cr 80000000 xer 00000000) addme 00000000 XER.CA=1 = 00000000 (cr 00000000 xer 20000000) subfme 00000000 XER.CA=1 = ffffffff (cr 00000000 xer 20000000) On a real G5: mullwo. 000f423f ffffffff = fff0bdc1 (cr 80000000 xer 00000000) addme 00000000 XER.CA=1 = 00000000 (cr 00000000 xer 20000000) subfme 00000000 XER.CA=1 = ffffffff (cr 00000000 xer 20000000) J