diff options
Diffstat (limited to 'sysdeps/sparc/sparc32/soft-fp/sfp-machine.h')
-rw-r--r-- | sysdeps/sparc/sparc32/soft-fp/sfp-machine.h | 14 |
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) |