about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-06-13 13:37:16 -0400
committerRich Felker <dalias@aerifal.cx>2011-06-13 13:37:16 -0400
commit52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7 (patch)
tree93cd6fa25d45c0fe6e007653f1b924d0add6c953
parentb09b78905b09016becda8df81a43e11bebd88208 (diff)
downloadmusl-52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7.tar.gz
musl-52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7.tar.xz
musl-52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7.zip
fix fesetround - it was writing to status word instead of control word
-rw-r--r--src/fenv/i386/fenv.s11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/fenv/i386/fenv.s b/src/fenv/i386/fenv.s
index 72d2ed7d..34101d58 100644
--- a/src/fenv/i386/fenv.s
+++ b/src/fenv/i386/fenv.s
@@ -27,10 +27,15 @@ feraiseexcept:
 
 .global fesetround
 fesetround:
+	mov 4(%esp),%ecx
 	xor %eax,%eax
-	mov $0xc00,%ecx
-	mov 4(%esp),%edx
-	jmp 2b
+	sub $32,%esp
+	fnstenv (%esp)
+	andb $0xf3,1(%esp)
+	or %ecx,(%esp)
+	fldenv (%esp)
+	add $32,%esp
+	ret
 
 .global fegetround
 fegetround: