about summary refs log tree commit diff
path: root/sysdeps/i386/fpu
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-07-14 10:04:21 +0000
committerRoland McGrath <roland@gnu.org>1996-07-14 10:04:21 +0000
commitc928de790200bc7a81224377d35a91a6103387de (patch)
tree470cac87d54b6d7fe1d25f3a4b0864779de900fe /sysdeps/i386/fpu
parent2064087b5f1a0a3a189fcd6a3012376f5545be31 (diff)
downloadglibc-c928de790200bc7a81224377d35a91a6103387de.tar.gz
glibc-c928de790200bc7a81224377d35a91a6103387de.tar.xz
glibc-c928de790200bc7a81224377d35a91a6103387de.zip
* elf/dl-deps.c (_dl_map_object_deps): Start TAILP at last preload.
	* elf/dl-open.c (_dl_open): Force an indirect call for
	_dl_relocate_object so there is no chance a PLT fixup will be done
	and clobber _dl_global_scope before our call happens.

	* sysdeps/i386/fpu/__math.h (tan): Correct output constraint from =u
	to =t; must operate on top of fp reg stack, not second from top.
	Correct input constraint to 0 from t; must be explicit when input and
	output are the same register.
	(floor): Use __volatile instead of volatile.
	(ceil): Likewise.

	* manual/Makefile ($(objpfx)stamp%-$(subdir)): Separate rule from
	other targets.
Diffstat (limited to 'sysdeps/i386/fpu')
-rw-r--r--sysdeps/i386/fpu/__math.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/sysdeps/i386/fpu/__math.h b/sysdeps/i386/fpu/__math.h
index 9648ef592e..3efa7512eb 100644
--- a/sysdeps/i386/fpu/__math.h
+++ b/sysdeps/i386/fpu/__math.h
@@ -120,7 +120,7 @@ tan (double __x)
   register double __value;
   __asm __volatile__
     ("fptan"
-     : "=u" (__value) : "t" (__x));
+     : "=t" (__value) : "0" (__x));
 
   return __value;
 }
@@ -334,13 +334,13 @@ __MATH_INLINE double
 floor (double __x)
 {
   register double __value;
-  volatile short __cw, __cwtmp;
+  __volatile unsigned short int __cw, __cwtmp;
 
-  __asm volatile ("fnstcw %0" : "=m" (__cw));
+  __asm __volatile ("fnstcw %0" : "=m" (__cw));
   __cwtmp = (__cw & 0xf3ff) | 0x0400; /* rounding down */
-  __asm volatile ("fldcw %0" : : "m" (__cwtmp));
-  __asm volatile ("frndint" : "=t" (__value) : "0" (__x));
-  __asm volatile ("fldcw %0" : : "m" (__cw));
+  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));
+  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));
+  __asm __volatile ("fldcw %0" : : "m" (__cw));
 
   return __value;
 }
@@ -350,13 +350,13 @@ __MATH_INLINE double
 ceil (double __x)
 {
   register double __value;
-  volatile short __cw, __cwtmp;
+  __volatile unsigned short int __cw, __cwtmp;
 
-  __asm volatile ("fnstcw %0" : "=m" (__cw));
+  __asm __volatile ("fnstcw %0" : "=m" (__cw));
   __cwtmp = (__cw & 0xf3ff) | 0x0800; /* rounding up */
-  __asm volatile ("fldcw %0" : : "m" (__cwtmp));
-  __asm volatile ("frndint" : "=t" (__value) : "0" (__x));
-  __asm volatile ("fldcw %0" : : "m" (__cw));
+  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));
+  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));
+  __asm __volatile ("fldcw %0" : : "m" (__cw));
 
   return __value;
 }