X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fglobals.h;h=b0e812ba494a7d4d9ff7def4f620a6c2589f86a2;hb=1e5296127f5b384a2171646747021ebeee73b801;hp=4d83b31ef95eddefcdef8e19365d61969e14337b;hpb=1de12891f900d156ed035a097561ecd7755a256a;p=sbcl.git diff --git a/src/runtime/globals.h b/src/runtime/globals.h index 4d83b31..b0e812b 100644 --- a/src/runtime/globals.h +++ b/src/runtime/globals.h @@ -16,13 +16,26 @@ # include # include # include "runtime.h" +# include "runtime-options.h" #endif #include "sbcl.h" #ifndef LANGUAGE_ASSEMBLY + +#ifdef LISP_FEATURE_SB_THREAD +#define foreign_function_call_active_p(thread) \ + (thread->foreign_function_call_active) +#else extern int foreign_function_call_active; -extern size_t dynamic_space_size; +#define foreign_function_call_active_p(thread) \ + foreign_function_call_active +#endif + +extern os_vm_size_t dynamic_space_size; +extern os_vm_size_t thread_control_stack_size; + +extern struct runtime_options *runtime_options; #ifdef LISP_FEATURE_WIN32 #define ENVIRON _environ @@ -31,15 +44,19 @@ extern size_t dynamic_space_size; #endif extern char **ENVIRON; -#if defined(LISP_FEATURE_SB_THREAD) +#if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_GCC_TLS) extern pthread_key_t specials; #endif +#if !defined(LISP_FEATURE_SB_THREAD) extern lispobj *current_control_stack_pointer; +#endif +#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) || !defined(LISP_FEATURE_SB_THREAD) extern lispobj *current_control_frame_pointer; -# if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) +#endif +#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) && !defined(LISP_FEATURE_SB_THREAD) extern lispobj *current_binding_stack_pointer; -# endif +#endif #if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) /* This is unused on X86 and X86_64, but is used as the global @@ -86,7 +103,7 @@ extern void globals_init(void); /**/ # ifdef LISP_FEATURE_PPC # ifdef LISP_FEATURE_DARWIN -# define EXTERN(name,bytes) .globl _/**/name +# define EXTERN(name,bytes) .globl _ ## name # else # define EXTERN(name,bytes) .globl name # endif @@ -102,9 +119,13 @@ extern void globals_init(void); # define POINTERSIZE 4 # endif +#ifndef LISP_FEATURE_SB_THREAD EXTERN(foreign_function_call_active, 4) +#endif +#if !defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_C_STACK_IS_CONTROL_STACK) EXTERN(current_control_stack_pointer, POINTERSIZE) +#endif EXTERN(current_control_frame_pointer, POINTERSIZE) # if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) EXTERN(current_binding_stack_pointer, POINTERSIZE)