X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-64-linux-os.c;h=d3d2c30ced3a0a543f1a11803d66613bf3359f26;hb=5f0bd05a15aaf93f46baf9b8aa3e9b0bfbca26ab;hp=12d426600fe2358ec7935b16ca81ab803b3be72e;hpb=9a19ce460a70a6c1de36095b3e2621116b91cc80;p=sbcl.git diff --git a/src/runtime/x86-64-linux-os.c b/src/runtime/x86-64-linux-os.c index 12d4266..d3d2c30 100644 --- a/src/runtime/x86-64-linux-os.c +++ b/src/runtime/x86-64-linux-os.c @@ -151,11 +151,13 @@ os_context_sigmask_addr(os_context_t *context) void os_restore_fp_control(os_context_t *context) { - /* reset exception flags and restore control flags on SSE2 FPU */ - unsigned int temp = (context->uc_mcontext.fpregs->mxcsr) & ~0x3F; - asm ("ldmxcsr %0" : : "m" (temp)); - /* same for x87 FPU. */ - asm ("fldcw %0" : : "m" (context->uc_mcontext.fpregs->cwd)); + if (context->uc_mcontext.fpregs) { + /* reset exception flags and restore control flags on SSE2 FPU */ + unsigned int temp = (context->uc_mcontext.fpregs->mxcsr) & ~0x3F; + asm ("ldmxcsr %0" : : "m" (temp)); + /* same for x87 FPU. */ + asm ("fldcw %0" : : "m" (context->uc_mcontext.fpregs->cwd)); + } } void