X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fglobals.c;h=63d53edce5327155cee59c128b8630c63e3faad6;hb=4ba392170e98744f0ef0b8e08a5d42b988f1d0c9;hp=099acd26326711398a23b940e1172d7675317737;hpb=b5b36522d5398715e53a3c6ca75cf16001ce46ac;p=sbcl.git diff --git a/src/runtime/globals.c b/src/runtime/globals.c index 099acd2..63d53ed 100644 --- a/src/runtime/globals.c +++ b/src/runtime/globals.c @@ -22,13 +22,17 @@ #include "globals.h" #include "validate.h" -#ifdef FOREIGN_FUNCTION_CALL_FLAG +#ifndef LISP_FEATURE_SB_THREAD int foreign_function_call_active; #endif +#if !defined(LISP_FEATURE_SB_THREAD) lispobj *current_control_stack_pointer; +#endif +#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) || !defined(LISP_FEATURE_SB_THREAD) lispobj *current_control_frame_pointer; -#ifndef BINDING_STACK_POINTER +#endif +#if !defined(BINDING_STACK_POINTER) && !defined(LISP_FEATURE_SB_THREAD) lispobj *current_binding_stack_pointer; #endif @@ -56,16 +60,27 @@ void globals_init(void) { /* Space, stack, and free pointer vars are initialized by * validate() and coreparse(). */ +#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) || !defined(LISP_FEATURE_SB_THREAD) current_control_frame_pointer = (lispobj *)0; +#endif #ifndef LISP_FEATURE_GENCGC /* no GC trigger yet */ current_auto_gc_trigger = NULL; #endif -#ifdef FOREIGN_FUNCTION_CALL_FLAG +#ifndef LISP_FEATURE_SB_THREAD +#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) + /* KLUDGE: x86oids always think they're in lisp code. See the + * comment at the bottom of + * interrupt.c/fake_foreign_function_call() and the lack of any + * access to foreign_function_call_active or the corresponding + * thread slot in x86{,-64}-assem.S. */ + foreign_function_call_active = 0; +#else foreign_function_call_active = 1; #endif +#endif #if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_GCC_TLS) pthread_key_create(&specials,0);