Delivered-To: raj.khem@gmail.com
Received: by 10.50.216.195 with SMTP id os3csp11191igc;
        Thu, 15 Aug 2013 04:32:45 -0700 (PDT)
X-Received: by 10.180.98.3 with SMTP id ee3mr1508103wib.48.1376566364872;
        Thu, 15 Aug 2013 04:32:44 -0700 (PDT)
Return-Path: <aurelien@aurel32.net>
Received: from hall.aurel32.net (hall.aurel32.net. [2001:470:1f0b:4a8::1])
        by mx.google.com with ESMTPS id vv5si15578100wjc.49.2013.08.15.04.32.44
        for <raj.khem@gmail.com>
        (version=TLSv1.2 cipher=RC4-SHA bits=128/128);
        Thu, 15 Aug 2013 04:32:44 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of aurelien@aurel32.net designates 2001:470:1f0b:4a8::1 as permitted sender) client-ip=2001:470:1f0b:4a8::1;
Authentication-Results: mx.google.com;
       spf=pass (google.com: best guess record for domain of aurelien@aurel32.net designates 2001:470:1f0b:4a8::1 as permitted sender) smtp.mail=aurelien@aurel32.net
Received: from [2001:470:d4ed:1:2db:dfff:fe14:52d] (helo=ohm.aurel32.net)
	by hall.aurel32.net with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128)
	(Exim 4.80)
	(envelope-from <aurelien@aurel32.net>)
	id 1V9vnG-0006cO-NN; Thu, 15 Aug 2013 13:32:42 +0200
Received: from aurel32 by ohm.aurel32.net with local (Exim 4.80)
	(envelope-from <aurelien@aurel32.net>)
	id 1V9vnF-0002Lw-7L; Thu, 15 Aug 2013 13:32:41 +0200
From: Aurelien Jarno <aurelien@aurel32.net>
To: qemu-devel@nongnu.org
Cc: Khem Raj <raj.khem@gmail.com>,
	Alexander Graf <agraf@suse.de> ,
	qemu-stable@nongnu.org,
	qemu-ppc@nongnu.org,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: [PATCH] target-ppc: fix bit extraction for FPBF and FPL
Date: Thu, 15 Aug 2013 13:32:38 +0200
Message-Id: <1376566358-8989-1-git-send-email-aurelien@aurel32.net>
X-Mailer: git-send-email 1.7.10.4

Bit extraction for the FP BF and L field of the MTFSFI and MTFSF
instructions is wrong and doesn't match the reference manual (which
explain the bit number in big endian format). It has been broken in
commit 7d08d85645def18eac2a9d672c1868a35e0bcf79.

This patch fixes this, which in turn fixes the problem reported by
Khem Raj about the floor() function of libm.

Reported-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

Upstream-Status: Backport

---
 target-ppc/translate.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

I don't know if we still have time to get this into 1.6, hence the Cc:
to stable. In anycase it also needs to be fixed in 1.5.

Index: qemu-1.5.0/target-ppc/translate.c
===================================================================
--- qemu-1.5.0.orig/target-ppc/translate.c	2013-05-20 08:34:40.000000000 -0700
+++ qemu-1.5.0/target-ppc/translate.c	2013-08-15 06:49:25.028144352 -0700
@@ -428,9 +428,9 @@
 EXTRACT_HELPER(SR, 16, 4);
 
 /* mtfsf/mtfsfi */
-EXTRACT_HELPER(FPBF, 19, 3);
+EXTRACT_HELPER(FPBF, 23, 3);
 EXTRACT_HELPER(FPIMM, 12, 4);
-EXTRACT_HELPER(FPL, 21, 1);
+EXTRACT_HELPER(FPL, 25, 1);
 EXTRACT_HELPER(FPFLM, 17, 8);
 EXTRACT_HELPER(FPW, 16, 1);
 
