about summary refs log tree commit diff
path: root/sysdeps/mach/hurd/i386/sigreturn.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/i386/sigreturn.c')
-rw-r--r--sysdeps/mach/hurd/i386/sigreturn.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sysdeps/mach/hurd/i386/sigreturn.c b/sysdeps/mach/hurd/i386/sigreturn.c
index df8960669f..19ba1d472c 100644
--- a/sysdeps/mach/hurd/i386/sigreturn.c
+++ b/sysdeps/mach/hurd/i386/sigreturn.c
@@ -80,10 +80,9 @@ __sigreturn (struct sigcontext *scp)
   *reply_port = scp->sc_reply_port;
 
   if (scp->sc_fpused)
-    {
-  /* XXX should restore FPU state here XXX roland needs 387 manual */
-  /*    abort (); */
-    }
+    /* Restore the FPU state.  Mach conveniently stores the state
+       in the format the i387 `frstor' instruction uses to restore it.  */
+    asm volatile ("frstor %0" : : "m" (scp->sc_fpsave));
 
   {
     /* There are convenient instructions to pop state off the stack, so we