aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/x86_64/fpu/s_truncl.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64/fpu/s_truncl.S')
-rw-r--r--sysdeps/x86_64/fpu/s_truncl.S13
1 files changed, 8 insertions, 5 deletions
diff --git a/sysdeps/x86_64/fpu/s_truncl.S b/sysdeps/x86_64/fpu/s_truncl.S
index c37cf00..0b46efe 100644
--- a/sysdeps/x86_64/fpu/s_truncl.S
+++ b/sysdeps/x86_64/fpu/s_truncl.S
@@ -21,13 +21,16 @@
ENTRY(__truncl)
fldt 8(%rsp)
- fstcw -4(%rsp)
+ fnstenv -28(%rsp)
movl $0xc00, %edx
- orl -4(%rsp), %edx
- movl %edx, -8(%rsp)
- fldcw -8(%rsp)
+ orl -28(%rsp), %edx
+ movl %edx, -32(%rsp)
+ fldcw -32(%rsp)
frndint
- fldcw -4(%rsp)
+ fnstsw
+ andl $0x1, %eax
+ orl %eax, -24(%rsp)
+ fldenv -28(%rsp)
ret
END(__truncl)
weak_alias (__truncl, truncl)