From: Paul Mackerras <paulus@samba.org>

This patch fixes a bug in the kernel emulation of altivec instructions with
denormalized operands.  The emulation of the vmaddfp and vmnsubfp
instructions was giving the wrong answer because I had the wrong order of
operands to the fmadds and fnmsubs instructions.  This patch fixes it for
both ppc32 and ppc64.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ppc/kernel/vector.S   |    4 ++--
 25-akpm/arch/ppc64/kernel/vector.S |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff -puN arch/ppc64/kernel/vector.S~ppc32-fix-bug-in-altivec-emulation arch/ppc64/kernel/vector.S
--- 25/arch/ppc64/kernel/vector.S~ppc32-fix-bug-in-altivec-emulation	Tue Aug 17 14:57:04 2004
+++ 25-akpm/arch/ppc64/kernel/vector.S	Tue Aug 17 14:57:04 2004
@@ -89,7 +89,7 @@ _GLOBAL(vmaddfp)
 1:	lfsx	fr0,r4,r7
 	lfsx	fr1,r5,r7
 	lfsx	fr2,r6,r7
-	fmadds	fr0,fr0,fr1,fr2
+	fmadds	fr0,fr0,fr2,fr1
 	stfsx	fr0,r3,r7
 	addi	r7,r7,4
 	bdnz	1b
@@ -109,7 +109,7 @@ _GLOBAL(vnmsubfp)
 1:	lfsx	fr0,r4,r7
 	lfsx	fr1,r5,r7
 	lfsx	fr2,r6,r7
-	fnmsubs	fr0,fr0,fr1,fr2
+	fnmsubs	fr0,fr0,fr2,fr1
 	stfsx	fr0,r3,r7
 	addi	r7,r7,4
 	bdnz	1b
diff -puN arch/ppc/kernel/vector.S~ppc32-fix-bug-in-altivec-emulation arch/ppc/kernel/vector.S
--- 25/arch/ppc/kernel/vector.S~ppc32-fix-bug-in-altivec-emulation	Tue Aug 17 14:57:04 2004
+++ 25-akpm/arch/ppc/kernel/vector.S	Tue Aug 17 14:57:04 2004
@@ -106,7 +106,7 @@ vmaddfp:
 1:	lfsx	fr0,r4,r7
 	lfsx	fr1,r5,r7
 	lfsx	fr2,r6,r7
-	fmadds	fr0,fr0,fr1,fr2
+	fmadds	fr0,fr0,fr2,fr1
 	stfsx	fr0,r3,r7
 	addi	r7,r7,4
 	bdnz	1b
@@ -133,7 +133,7 @@ vnmsubfp:
 1:	lfsx	fr0,r4,r7
 	lfsx	fr1,r5,r7
 	lfsx	fr2,r6,r7
-	fnmsubs	fr0,fr0,fr1,fr2
+	fnmsubs	fr0,fr0,fr2,fr1
 	stfsx	fr0,r3,r7
 	addi	r7,r7,4
 	bdnz	1b
_