X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fx86-linux-os.c;h=ddbe154236cccc0d4302c61caed03302873071ba;hb=cf507f95509a855a752b6f1771aa06877b8a3b30;hp=d68e964745072ba60b5e35cf080c7b9607037048;hpb=d724066ca963f974b47f1a51af13ff9d680392db;p=sbcl.git diff --git a/src/runtime/x86-linux-os.c b/src/runtime/x86-linux-os.c index d68e964..ddbe154 100644 --- a/src/runtime/x86-linux-os.c +++ b/src/runtime/x86-linux-os.c @@ -107,8 +107,12 @@ int arch_os_thread_init(struct thread *thread) { pthread_mutex_unlock(&modify_ldt_lock); if(n<0) return 0; +#ifdef LISP_FEATURE_GCC_TLS + current_thread = thread; +#else pthread_setspecific(specials,thread); #endif +#endif #ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK /* Signal handlers are run on the control stack, so if it is exhausted * we had better use an alternate stack for whatever signal tells us @@ -204,7 +208,8 @@ os_context_sigmask_addr(os_context_t *context) void os_restore_fp_control(os_context_t *context) { - asm ("fldcw %0" : : "m" (context->uc_mcontext.fpregs->cw)); + if (context->uc_mcontext.fpregs) + asm ("fldcw %0" : : "m" (context->uc_mcontext.fpregs->cw)); } void