[PATCH v2 3/6] MIPS: math-emu: CLASS.D: Zero bits 32-63 of the result

2017-08-21 Thread Aleksandar Markovic
From: Aleksandar Markovic 

Fix content of CLASS.D output bits 32-63 to match hardware behavior.

Prior to this patch, bits 32-63 of CLASS.D output were not
initialized, causing different 32-63 bits content of CLASS.D, based on
circumstances. However, the hardware consistently returns all these
bits zeroed. The documentation is not clear whether these bits should
be zero or unpredictable. Since technically "all zero" case still can
be viewed as belonging to "unpredictable" class of results, it is
better to zero bits 32-63.

Signed-off-by: Miodrag Dinic 
Signed-off-by: Goran Ferenc 
Signed-off-by: Aleksandar Markovic 
---
 arch/mips/math-emu/cp1emu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index cabcf2c..1ad15f8 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -2144,8 +2144,8 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
return SIGILL;
 
DPFROMREG(fs, MIPSInst_FS(ir));
-   rv.w = ieee754dp_2008class(fs);
-   rfmt = w_fmt;
+   rv.l = ieee754dp_2008class(fs);
+   rfmt = l_fmt;
break;
}
 
-- 
2.9.3



[PATCH v2 3/6] MIPS: math-emu: CLASS.D: Zero bits 32-63 of the result

2017-08-21 Thread Aleksandar Markovic
From: Aleksandar Markovic 

Fix content of CLASS.D output bits 32-63 to match hardware behavior.

Prior to this patch, bits 32-63 of CLASS.D output were not
initialized, causing different 32-63 bits content of CLASS.D, based on
circumstances. However, the hardware consistently returns all these
bits zeroed. The documentation is not clear whether these bits should
be zero or unpredictable. Since technically "all zero" case still can
be viewed as belonging to "unpredictable" class of results, it is
better to zero bits 32-63.

Signed-off-by: Miodrag Dinic 
Signed-off-by: Goran Ferenc 
Signed-off-by: Aleksandar Markovic 
---
 arch/mips/math-emu/cp1emu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index cabcf2c..1ad15f8 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -2144,8 +2144,8 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
return SIGILL;
 
DPFROMREG(fs, MIPSInst_FS(ir));
-   rv.w = ieee754dp_2008class(fs);
-   rfmt = w_fmt;
+   rv.l = ieee754dp_2008class(fs);
+   rfmt = l_fmt;
break;
}
 
-- 
2.9.3