0.9.0.8:
[sbcl.git] / src / runtime / globals.h
index 695e644..82446b7 100644 (file)
@@ -9,75 +9,89 @@
  * files for more information.
  */
 
-/*
- * $Header$
- */
-
 #if !defined(_INCLUDE_GLOBALS_H_)
 #define _INCLUDED_GLOBALS_H_
 
 #ifndef LANGUAGE_ASSEMBLY
 
+#include <sys/types.h>
+#include <unistd.h>
+#include "sbcl.h"
 #include "runtime.h"
 
 extern int foreign_function_call_active;
+extern boolean stop_the_world;
 
 extern lispobj *current_control_stack_pointer;
 extern lispobj *current_control_frame_pointer;
-#if !defined(ibmrt) && !defined(__i386__)
+#if !defined(LISP_FEATURE_X86)
 extern lispobj *current_binding_stack_pointer;
 #endif
 
-extern lispobj *control_stack;
-#ifdef __i386__
-extern lispobj *control_stack_end;
-#endif
-#if !defined(ibmrt) && !defined(__i386__)
+#if !defined(LISP_FEATURE_X86)
+/* FIXME: Why doesn't the x86 need this? */
 extern lispobj *dynamic_space_free_pointer;
 extern lispobj *current_auto_gc_trigger;
 #endif
 
-extern void globals_init(void);
+extern lispobj *current_dynamic_space;
+extern boolean stop_the_world;
 
-#else  LANGUAGE_ASSEMBLY
+extern void globals_init(void);
 
-/* These are needed by ./assem.s */
+#else /* LANGUAGE_ASSEMBLY */
 
-#ifdef mips
+#ifdef LISP_FEATURE_MIPS
+#ifdef __linux__
+#define EXTERN(name,bytes) .globl name 
+#else
 #define EXTERN(name,bytes) .extern name bytes
 #endif
-#ifdef sparc
+#endif
+/**/
+#ifdef LISP_FEATURE_SPARC
 #ifdef SVR4
 #define EXTERN(name,bytes) .global name
 #else
 #define EXTERN(name,bytes) .global _ ## name
 #endif
 #endif
-#ifdef ibmrt
+/**/
+#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
-
-#ifdef __i386__
+#endif
+#ifdef LISP_FEATURE_X86
 #ifdef __linux__
+/* I'm very dubious about this.  Linux hasn't used _ on external names
+ * since ELF became prevalent - i.e. about 1996, on x86    -dan 20010125 */
 #define EXTERN(name,bytes) .globl _/**/name
 #else
 #define EXTERN(name,bytes) .global _ ## name
 #endif
 #endif
 
+/* FIXME : these sizes are, incidentally, bogus on Alpha.  But the
+ * EXTERN macro doesn't use its second arg anyway, so no immediate harm
+ * done   -dan 2002.05.07
+ */
+
 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_dynamic_space, 4)
 
-#endif LANGUAGE_ASSEMBLY
+#endif /* LANGUAGE_ASSEMBLY */
 
-#endif _INCLUDED_GLOBALS_H_
+#endif /* _INCLUDED_GLOBALS_H_ */