X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fthread.c;h=862e9f81eea1fd542735b02d10adfd5fd1952158;hb=922fe0d6da0e4bdcd366f5101395670aabd14e62;hp=f594d56da8146c4e6db5489db0bf16771316542e;hpb=9ee246f59019b776b38f6c09b2ce730cd0b32844;p=sbcl.git diff --git a/src/runtime/thread.c b/src/runtime/thread.c index f594d56..862e9f8 100644 --- a/src/runtime/thread.c +++ b/src/runtime/thread.c @@ -33,7 +33,6 @@ #include "runtime.h" #include "validate.h" /* for BINDING_STACK_SIZE etc */ -#include "alloc.h" #include "thread.h" #include "arch.h" #include "target-arch-os.h" @@ -43,6 +42,7 @@ #include "genesis/cons.h" #include "genesis/fdefn.h" #include "interr.h" /* for lose() */ +#include "alloc.h" #include "gc-internal.h" #ifdef LISP_FEATURE_WIN32 @@ -396,10 +396,14 @@ create_thread_struct(lispobj initial_function) { make_fixnum(THREAD_SLOT_OFFSET_WORDS(field)) STATIC_TLS_INIT(BINDING_STACK_START,binding_stack_start); +#ifdef BINDING_STACK_POINTER STATIC_TLS_INIT(BINDING_STACK_POINTER,binding_stack_pointer); +#endif STATIC_TLS_INIT(CONTROL_STACK_START,control_stack_start); STATIC_TLS_INIT(CONTROL_STACK_END,control_stack_end); +#ifdef ALIEN_STACK STATIC_TLS_INIT(ALIEN_STACK,alien_stack_pointer); +#endif #if defined(LISP_FEATURE_X86) || defined (LISP_FEATURE_X86_64) STATIC_TLS_INIT(PSEUDO_ATOMIC_BITS,pseudo_atomic_bits); #endif @@ -413,6 +417,7 @@ create_thread_struct(lispobj initial_function) { th->binding_stack_start= (lispobj*)((void*)th->control_stack_start+thread_control_stack_size); th->control_stack_end = th->binding_stack_start; + th->control_stack_guard_page_protected = T; th->alien_stack_start= (lispobj*)((void*)th->binding_stack_start+BINDING_STACK_SIZE); th->binding_stack_pointer=th->binding_stack_start;