0.9.6.42:
[sbcl.git] / src / runtime / globals.h
index 695e644..71f3085 100644 (file)
@@ -9,75 +9,94 @@
  * files for more information.
  */
 
-/*
- * $Header$
- */
-
-#if !defined(_INCLUDE_GLOBALS_H_)
+#ifndef _INCLUDED_GLOBALS_H_
 #define _INCLUDED_GLOBALS_H_
 
 #ifndef LANGUAGE_ASSEMBLY
+# include <sys/types.h>
+# include <unistd.h>
+# include "runtime.h"
+#endif
 
-#include "runtime.h"
+#include "sbcl.h"
 
+#ifndef LANGUAGE_ASSEMBLY
 extern int foreign_function_call_active;
+extern boolean stop_the_world;
+
+#if defined(LISP_FEATURE_SB_THREAD)
+extern pthread_key_t specials;
+#endif
 
 extern lispobj *current_control_stack_pointer;
 extern lispobj *current_control_frame_pointer;
-#if !defined(ibmrt) && !defined(__i386__)
+# if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
 extern lispobj *current_binding_stack_pointer;
-#endif
+# endif
 
-extern lispobj *control_stack;
-#ifdef __i386__
-extern lispobj *control_stack_end;
-#endif
-#if !defined(ibmrt) && !defined(__i386__)
+# ifndef LISP_FEATURE_GENCGC
+/* Beware! gencgc has also a (non-global) dynamic_space_free_pointer. */
 extern lispobj *dynamic_space_free_pointer;
 extern lispobj *current_auto_gc_trigger;
-#endif
-
-extern void globals_init(void);
+# endif
 
-#else  LANGUAGE_ASSEMBLY
+extern lispobj *current_dynamic_space;
 
-/* These are needed by ./assem.s */
+extern void globals_init(void);
 
-#ifdef mips
-#define EXTERN(name,bytes) .extern name bytes
-#endif
-#ifdef sparc
-#ifdef SVR4
-#define EXTERN(name,bytes) .global name
-#else
-#define EXTERN(name,bytes) .global _ ## name
-#endif
-#endif
-#ifdef ibmrt
-#define EXTERN(name,bytes) .globl _/**/name
-#endif
-
-#ifdef __i386__
-#ifdef __linux__
-#define EXTERN(name,bytes) .globl _/**/name
-#else
-#define EXTERN(name,bytes) .global _ ## name
-#endif
-#endif
+#else /* LANGUAGE_ASSEMBLY */
+
+# ifdef LISP_FEATURE_MIPS
+#  ifdef __linux__
+#   define EXTERN(name,bytes) .globl name
+#  else
+#   define EXTERN(name,bytes) .extern name bytes
+#  endif
+# endif
+/**/
+# ifdef LISP_FEATURE_SPARC
+#  ifdef SVR4
+#   define EXTERN(name,bytes) .global name
+#  else
+#   define EXTERN(name,bytes) .global _ ## name
+#  endif
+# endif
+/**/
+# ifdef LISP_FEATURE_ALPHA
+#  ifdef __linux__
+#   define EXTERN(name,bytes) .globl name
+#  endif
+# endif
+/**/
+# ifdef LISP_FEATURE_PPC
+#  ifdef LISP_FEATURE_DARWIN
+#   define EXTERN(name,bytes) .globl _/**/name
+#  else
+#   define EXTERN(name,bytes) .globl name
+#  endif
+# endif
+/**/
+# if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)
+#  define EXTERN(name,bytes) .global name
+# endif
+
+# if defined(LISP_FEATURE_ALPHA) || defined(LISP_FEATURE_X86_64)
+#  define POINTERSIZE 8
+# else
+#  define POINTERSIZE 4
+# endif
 
 EXTERN(foreign_function_call_active, 4)
 
-EXTERN(current_control_stack_pointer, 4)
-EXTERN(current_control_frame_pointer, 4)
-#if !defined(ibmrt) && !defined(__i386__)
-EXTERN(current_binding_stack_pointer, 4)
-EXTERN(dynamic_space_free_pointer, 4)
-#endif
-
-#ifdef mips
-EXTERN(current_flags_register, 4)
-#endif
+EXTERN(current_control_stack_pointer, POINTERSIZE)
+EXTERN(current_control_frame_pointer, POINTERSIZE)
+# if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
+EXTERN(current_binding_stack_pointer, POINTERSIZE)
+# endif
+# ifndef LISP_FEATURE_GENCGC
+EXTERN(dynamic_space_free_pointer, POINTERSIZE)
+# endif
 
-#endif LANGUAGE_ASSEMBLY
+#endif /* LANGUAGE_ASSEMBLY */
 
-#endif _INCLUDED_GLOBALS_H_
+#endif /* _INCLUDED_GLOBALS_H_ */