summaryrefslogtreecommitdiff
path: root/libgfortran/config
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/config')
-rw-r--r--libgfortran/config/fpu-387.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h
index 5fe51b2d209..2bd9efb5512 100644
--- a/libgfortran/config/fpu-387.h
+++ b/libgfortran/config/fpu-387.h
@@ -64,7 +64,6 @@ has_sse (void)
if (edx & bit_SSE)
{
struct sigaction act, oact;
- unsigned int cw_sse;
act.sa_handler = sigill_hdlr;
sigemptyset (&act.sa_mask);
@@ -72,7 +71,9 @@ has_sse (void)
act.sa_flags = SA_SIGINFO;
sigaction (SIGILL, &act, &oact);
- asm volatile ("stmxcsr %0" : "=m" (cw_sse));
+ /* We need a single SSE instruction here so the handler can safely skip
+ over it. */
+ __asm__ volatile ("movss %xmm2,%xmm1");
sigaction (SIGILL, &oact, NULL);