Replace FPE_RESET_TRAPS by generic clear_float_exceptions.
authorTaylor R Campbell <campbell@mumble.net>
Tue, 2 Nov 2010 01:41:18 +0000 (01:41 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Tue, 2 Nov 2010 01:41:18 +0000 (01:41 +0000)
src/microcode/cmpauxmd/x86-64.m4
src/microcode/cmpintmd/i386.h
src/microcode/cmpintmd/x86-64.c
src/microcode/cmpintmd/x86-64.h
src/microcode/floenv.c
src/microcode/uxsig.c

index 8555d6a696c6833591c2b80c27c4bfdbf83d7398..a943c0cbd7fc3d17e1e2fe48d678a7c8eb09109c 100644 (file)
@@ -356,7 +356,7 @@ define_double(flonum_one,1.0)
 DECLARE_CODE_SEGMENT()
 declare_alignment(2)
 
-define_c_label(x86_64_fpe_reset_traps)
+define_c_label(x86_64_interface_initialize)
        OP(push,q)      REG(rbp)
        OP(mov,q)       TW(REG(rsp),REG(rbp))
        OP(sub,q)       TW(IMM(8),REG(rsp))
index f7ab66826de184fd526ae5f70535e10ed4de1661..054cb0438a95064763cfff26a7fd9dd96c4e3f95 100644 (file)
@@ -182,7 +182,6 @@ magic = ([TC_COMPILED_ENTRY | 0] - (offset + length_of_CALL_instruction))
 */
 \f
 #define ASM_RESET_HOOK i386_reset_hook
-#define FPE_RESET_TRAPS i386_interface_initialize
 
 #define CMPINT_USE_STRUCS 1
 
index 8d5c3967a9100d22e891293d95b89c99f3d4cefa..02d5414095b83cc78eab33332849446366ff0eeb 100644 (file)
@@ -223,7 +223,7 @@ x86_64_reset_hook (void)
   int offset = (COMPILER_REGBLOCK_N_FIXED * (sizeof (SCHEME_OBJECT)));
   unsigned char * rsi_value = ((unsigned char *) Registers);
 
-  x86_64_fpe_reset_traps ();
+  x86_64_interface_initialize ();
 
   /* These must match machines/x86-64/lapgen.scm */
 
index 91c815f5af0e9c3f6ed0bae7d2d110d45de850f3..787df1a3362b210e87634972835091fc0b5856b6 100644 (file)
@@ -117,7 +117,6 @@ entry       0               MOV     AL,code         0xB0, code-byte
 */
 \f
 #define ASM_RESET_HOOK x86_64_reset_hook
-#define FPE_RESET_TRAPS x86_64_fpe_reset_traps
 
 #define CMPINT_USE_STRUCS 1
 
@@ -174,7 +173,7 @@ typedef byte_t insn_t;
 #  define ASM_ENTRY_POINT(name) name
 #endif
 
-extern void ASM_ENTRY_POINT (x86_64_fpe_reset_traps) (void);
+extern void ASM_ENTRY_POINT (x86_64_interface_initialize) (void);
 extern void ASM_ENTRY_POINT (within_c_stack) (void (*) (void *), void *);
 
 extern void asm_assignment_trap (void);
index 9d3978f555f744c31707e42a03fe657dd651d7a6..ed08a506e987dcd72b8c6d29ecdb799af637c1cd 100644 (file)
@@ -77,6 +77,14 @@ fixup_float_environment (void)
 #endif
 }
 
+void
+clear_float_exceptions (void)
+{
+#ifdef HAVE_FECLEAREXCEPT
+  (void) feclearexcept (FE_ALL_EXCEPT);
+#endif
+}
+
 /* FIXME: Alignment?  */
 
 static SCHEME_OBJECT
index 743d2f765e5a66f342778e0c5fb64effcb7cc764..b1fa4129f74121334af32e6a115d24e21e9fdb3b 100644 (file)
@@ -541,15 +541,13 @@ DEFUN_STD_HANDLER (sighnd_terminate,
     ? (find_signal_name (signo))
     : 0)))
 \f
-#ifndef FPE_RESET_TRAPS
-#  define FPE_RESET_TRAPS()
-#endif
-
 #ifdef HAVE_SIGFPE
+extern void clear_float_exceptions (void);
+
 static
 DEFUN_STD_HANDLER (sighnd_fpe,
 {
-  FPE_RESET_TRAPS ();
+  clear_float_exceptions ();
   trap_handler ("floating-point exception", signo, info, scp);
 })
 #endif