about summary refs log tree commit diff
path: root/sysdeps/i386/fpu/s_nearbyintl.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/fpu/s_nearbyintl.S')
-rw-r--r--sysdeps/i386/fpu/s_nearbyintl.S26
1 files changed, 12 insertions, 14 deletions
diff --git a/sysdeps/i386/fpu/s_nearbyintl.S b/sysdeps/i386/fpu/s_nearbyintl.S
index 819af63a8d..b260ab5914 100644
--- a/sysdeps/i386/fpu/s_nearbyintl.S
+++ b/sysdeps/i386/fpu/s_nearbyintl.S
@@ -8,22 +8,20 @@
 
 ENTRY(__nearbyintl)
 	fldt	4(%esp)
-	pushl	%eax
-	cfi_adjust_cfa_offset (4)
-	pushl	%ecx
-	cfi_adjust_cfa_offset (4)
-	fnstcw	(%esp)
-	movl	(%esp), %eax
+	subl	$32, %esp
+	cfi_adjust_cfa_offset (32)
+	fnstenv	4(%esp)
+	movl	4(%esp), %eax
 	orl	$0x20, %eax
-	movl	%eax, 4(%esp)
-	fldcw	4(%esp)
-	frndint
-	fclex
+	movl	%eax, (%esp)
 	fldcw	(%esp)
-	popl	%ecx
-	cfi_adjust_cfa_offset (-4)
-	popl	%eax
-	cfi_adjust_cfa_offset (-4)
+	frndint
+	fnstsw
+	andl	$0x1, %eax
+	orl	%eax, 8(%esp)
+	fldenv	4(%esp)
+	addl	$32, %esp
+	cfi_adjust_cfa_offset (-32)
 	ret
 END (__nearbyintl)
 weak_alias (__nearbyintl, nearbyintl)