summaryrefslogtreecommitdiff
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)