X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fglobals.h;h=679e6265098968dc94f2005a12c6eadbc18ff403;hb=743831e679b673a5680a0afd8402911516bf50e2;hp=78590142887d0630557f19d87512e08b9d69a098;hpb=d8e682fdfb7e8ba067e15aea0f3d1f8d37ca9eb1;p=sbcl.git diff --git a/src/runtime/globals.h b/src/runtime/globals.h index 7859014..679e626 100644 --- a/src/runtime/globals.h +++ b/src/runtime/globals.h @@ -20,11 +20,31 @@ #include "sbcl.h" +/* Currently threads live only on x86oid platforms, but this thing + * cannot ever work with threads, so... */ +#if !defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) +#define FOREIGN_FUNCTION_CALL_FLAG +#endif + #ifndef LANGUAGE_ASSEMBLY + +#ifdef FOREIGN_FUNCTION_CALL_FLAG extern int foreign_function_call_active; -extern boolean stop_the_world; +#endif -#if defined(LISP_FEATURE_SB_THREAD) +extern size_t dynamic_space_size; +extern size_t thread_control_stack_size; + +extern struct runtime_options *runtime_options; + +#ifdef LISP_FEATURE_WIN32 +#define ENVIRON _environ +#else +#define ENVIRON environ +#endif +extern char **ENVIRON; + +#if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_GCC_TLS) extern pthread_key_t specials; #endif @@ -34,9 +54,18 @@ extern lispobj *current_control_frame_pointer; extern lispobj *current_binding_stack_pointer; # endif -# ifndef LISP_FEATURE_GENCGC -/* Beware! gencgc has also a (non-global) dynamic_space_free_pointer. */ +#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) +/* This is unused on X86 and X86_64, but is used as the global + * allocation pointer by the cheney GC, and, in some instances, as + * the global allocation pointer on PPC/GENCGC. This should probably + * be cleaned up such that it only needs to exist on cheney. At the + * moment, it is also used by the GENCGC, to hold the pseudo_atomic + * bits, and is tightly coupled to reg_ALLOC by the assembly + * routines. */ extern lispobj *dynamic_space_free_pointer; +#endif + +# ifndef LISP_FEATURE_GENCGC extern lispobj *current_auto_gc_trigger; # endif @@ -48,7 +77,7 @@ extern void globals_init(void); # ifdef LISP_FEATURE_MIPS # ifdef __linux__ -# define EXTERN(name,bytes) .globl name +# define EXTERN(name,bytes) .globl name # else # define EXTERN(name,bytes) .extern name bytes # endif @@ -64,15 +93,15 @@ extern void globals_init(void); /**/ # ifdef LISP_FEATURE_ALPHA # ifdef __linux__ -# define EXTERN(name,bytes) .globl name +# define EXTERN(name,bytes) .globl name # endif # endif /**/ # 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 +# define EXTERN(name,bytes) .globl name # endif # endif /**/ @@ -86,7 +115,9 @@ extern void globals_init(void); # define POINTERSIZE 4 # endif +#ifdef FOREIGN_FUNCTION_CALL_FLAG EXTERN(foreign_function_call_active, 4) +#endif EXTERN(current_control_stack_pointer, POINTERSIZE) EXTERN(current_control_frame_pointer, POINTERSIZE)