about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/sparc/sparc32/soft-fp/sfp-machine.h')
-rw-r--r--sysdeps/sparc/sparc32/soft-fp/sfp-machine.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h b/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
index f1211705ef..40bcbb4762 100644
--- a/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
+++ b/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
@@ -1,6 +1,6 @@
 /* Machine-dependent software floating-point definitions.
    Sparc userland (_Q_*) version.
-   Copyright (C) 1997,1998,1999, 2002, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@cygnus.com),
 		  Jakub Jelinek (jj@ultra.linux.cz) and
@@ -22,7 +22,6 @@
    02111-1307 USA.  */
 
 #include <fpu_control.h>
-#include <stdlib.h>
 
 #define _FP_W_TYPE_SIZE		32
 #define _FP_W_TYPE		unsigned long
@@ -209,5 +208,14 @@ do {								\
       	" : : "r" (___Q_numbers) : "f30");			\
     }								\
   else								\
-    ___Q_simulate_exceptions (_fex);			        \
+    {								\
+      __asm__ __volatile__("\
+        mov %0, %%o0\n\
+        mov %%o7, %%g1\n\
+        call ___Q_simulate_exceptions\n\
+         mov %%g1, %%o7\
+        " : : "r" (_fex) :					\
+        "g1", "g2", "g3", "g4", "g5", "o0", 			\
+        "o1", "o2", "o3", "o4", "o5", "cc");			\
+    }								\
 } while (0)