0.pre8.28
[sbcl/lichteblau.git] / src / runtime / globals.h
blobbaff01ad4508785897803b50e9339eeadc2246ea
1 /*
2 * This software is part of the SBCL system. See the README file for
3 * more information.
5 * This software is derived from the CMU CL system, which was
6 * written at Carnegie Mellon University and released into the
7 * public domain. The software is in the public domain and is
8 * provided with absolutely no warranty. See the COPYING and CREDITS
9 * files for more information.
12 #if !defined(_INCLUDE_GLOBALS_H_)
13 #define _INCLUDED_GLOBALS_H_
15 #ifndef LANGUAGE_ASSEMBLY
17 #include <sys/types.h>
18 #include <unistd.h>
19 #include "runtime.h"
21 extern int foreign_function_call_active;
22 extern boolean stop_the_world;
24 extern lispobj *current_control_stack_pointer;
25 extern lispobj *current_control_frame_pointer;
26 #if !defined(__i386__)
27 extern lispobj *current_binding_stack_pointer;
28 #endif
30 #if !defined(__i386__)
31 /* FIXME: Why doesn't the x86 need this? */
32 extern lispobj *dynamic_space_free_pointer;
33 extern lispobj *current_auto_gc_trigger;
34 #endif
36 extern lispobj *current_dynamic_space;
37 extern pid_t parent_pid;
39 extern void globals_init(void);
41 #else /* LANGUAGE_ASSEMBLY */
43 #ifdef mips
44 #define EXTERN(name,bytes) .extern name bytes
45 #endif
46 /**/
47 #ifdef sparc
48 #ifdef SVR4
49 #define EXTERN(name,bytes) .global name
50 #else
51 #define EXTERN(name,bytes) .global _ ## name
52 #endif
53 #endif
54 /**/
55 #ifdef alpha
56 #ifdef __linux__
57 #define EXTERN(name,bytes) .globl name
58 #endif
59 #endif
60 #ifdef ppc
61 #define EXTERN(name,bytes) .globl name
62 #endif
63 #ifdef __i386__
64 #ifdef __linux__
65 /* I'm very dubious about this. Linux hasn't used _ on external names
66 * since ELF became prevalent - i.e. about 1996, on x86 -dan 20010125 */
67 #define EXTERN(name,bytes) .globl _/**/name
68 #else
69 #define EXTERN(name,bytes) .global _ ## name
70 #endif
71 #endif
73 /* FIXME : these sizes are, incidentally, bogus on Alpha. But the
74 * EXTERN macro doesn't use its second arg anyway, so no immediate harm
75 * done -dan 2002.05.07
78 EXTERN(foreign_function_call_active, 4)
80 EXTERN(current_control_stack_pointer, 4)
81 EXTERN(current_control_frame_pointer, 4)
82 EXTERN(current_binding_stack_pointer, 4)
83 EXTERN(dynamic_space_free_pointer, 4)
84 EXTERN(current_dynamic_space, 4)
86 #ifdef mips
87 EXTERN(current_flags_register, 4)
88 #endif
90 #endif /* LANGUAGE_ASSEMBLY */
92 #endif /* _INCLUDED_GLOBALS_H_ */