aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2012-04-09 21:25:13 +0200
committerAndreas Jaeger <aj@suse.de>2012-04-09 21:25:13 +0200
commit8a1fbaaf75536088b4d505409e0e87975d8cf8d5 (patch)
tree1df51c8e1660d2ffdce8bf9ff75184e9affcc165
parent03879793292b70f4c3ca64259e80a2b44787e865 (diff)
parent8de131cbff365a34392ee3314ee5ea8007a877fe (diff)
downloadglibc-8a1fbaaf75536088b4d505409e0e87975d8cf8d5.tar
glibc-8a1fbaaf75536088b4d505409e0e87975d8cf8d5.tar.gz
glibc-8a1fbaaf75536088b4d505409e0e87975d8cf8d5.tar.bz2
glibc-8a1fbaaf75536088b4d505409e0e87975d8cf8d5.zip
Merge branch 'master' of git://sourceware.org/git/glibc
Conflicts: ChangeLog
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/i386/fpu/bits/mathinline.h14
2 files changed, 12 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index c032f1a749..109b6a100a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,11 @@
* manual/stdio.texi (Opening Streams): Document additional fopen
parameters.
+2012-04-09 Roland McGrath <roland@hack.frob.com>
+
+ * sysdeps/i386/fpu/bits/mathinline.h (__sincos_code): Don't clobber
+ %eax without telling the compiler.
+
2012-04-09 Carlos O'Donell <carlos_odonell@mentor.com>
[BZ # 13963]
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h
index 276acf8e71..6561ebaa39 100644
--- a/sysdeps/i386/fpu/bits/mathinline.h
+++ b/sysdeps/i386/fpu/bits/mathinline.h
@@ -1,6 +1,5 @@
/* Inline math functions for i387.
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2003,2004,2006,2007,2009,
- 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
@@ -324,22 +323,23 @@ __inline_mathcode (__pow2, __x, \
# define __sincos_code \
register long double __cosr; \
register long double __sinr; \
+ register unsigned int __swtmp; \
__asm __volatile__ \
("fsincos\n\t" \
- "fnstsw %%ax\n\t" \
- "testl $0x400, %%eax\n\t" \
+ "fnstsw %w2\n\t" \
+ "testl $0x400, %2\n\t" \
"jz 1f\n\t" \
"fldpi\n\t" \
"fadd %%st(0)\n\t" \
"fxch %%st(1)\n\t" \
"2: fprem1\n\t" \
- "fnstsw %%ax\n\t" \
- "testl $0x400, %%eax\n\t" \
+ "fnstsw %w2\n\t" \
+ "testl $0x400, %2\n\t" \
"jnz 2b\n\t" \
"fstp %%st(1)\n\t" \
"fsincos\n\t" \
"1:" \
- : "=t" (__cosr), "=u" (__sinr) : "0" (__x)); \
+ : "=t" (__cosr), "=u" (__sinr), "=a" (__swtmp) : "0" (__x)); \
*__sinx = __sinr; \
*__cosx = __cosr