X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-darwin-os.c;h=fb57da5d0f579dd735086bedd2988f8ec9805198;hb=cdd026dddac3eaddbaa0221503e49e2673d54545;hp=f10d071c0f378402f04fcc03aa4b1e5bdccd65cc;hpb=c3af3cf3704ce01c71de96cc36c2798014fc9960;p=sbcl.git diff --git a/src/runtime/x86-darwin-os.c b/src/runtime/x86-darwin-os.c index f10d071..fb57da5 100644 --- a/src/runtime/x86-darwin-os.c +++ b/src/runtime/x86-darwin-os.c @@ -509,4 +509,16 @@ catch_exception_raise(mach_port_t exception_port, return ret; } +void +os_restore_fp_control(os_context_t *context) +{ + /* KLUDGE: The x87 FPU control word is some nasty bitfield struct + * thing. Rather than deal with that, just grab it as a 16-bit + * integer. */ + unsigned short fpu_control_word = + *((unsigned short *)&context->uc_mcontext->FS.FPU_FCW); + /* reset exception flags and restore control flags on x87 FPU */ + asm ("fldcw %0" : : "m" (fpu_control_word)); +} + #endif