From: Paul Mackerras 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 Signed-off-by: Andrew Morton --- 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 _