Initial revision
[sbcl.git] / src / runtime / globals.h
1 /*
2  * This software is part of the SBCL system. See the README file for
3  * more information.
4  *
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.
10  */
11
12 /*
13  * $Header$
14  */
15
16 #if !defined(_INCLUDE_GLOBALS_H_)
17 #define _INCLUDED_GLOBALS_H_
18
19 #ifndef LANGUAGE_ASSEMBLY
20
21 #include "runtime.h"
22
23 extern int foreign_function_call_active;
24
25 extern lispobj *current_control_stack_pointer;
26 extern lispobj *current_control_frame_pointer;
27 #if !defined(ibmrt) && !defined(__i386__)
28 extern lispobj *current_binding_stack_pointer;
29 #endif
30
31 extern lispobj *read_only_space;
32 extern lispobj *static_space;
33 extern lispobj *dynamic_0_space;
34 extern lispobj *dynamic_1_space;
35 extern lispobj *control_stack;
36 extern lispobj *binding_stack;
37 #ifdef __i386__
38 extern lispobj *control_stack_end;
39 #endif
40 extern lispobj *current_dynamic_space;
41 #if !defined(ibmrt) && !defined(__i386__)
42 extern lispobj *current_dynamic_space_free_pointer;
43 extern lispobj *current_auto_gc_trigger;
44 #endif
45
46 extern void globals_init(void);
47
48 #else  LANGUAGE_ASSEMBLY
49
50 /* These are needed by ./assem.s */
51
52 #ifdef mips
53 #define EXTERN(name,bytes) .extern name bytes
54 #endif
55 #ifdef sparc
56 #ifdef SVR4
57 #define EXTERN(name,bytes) .global name
58 #else
59 #define EXTERN(name,bytes) .global _ ## name
60 #endif
61 #endif
62 #ifdef ibmrt
63 #define EXTERN(name,bytes) .globl _/**/name
64 #endif
65
66 #ifdef __i386__
67 #ifdef __linux__
68 #define EXTERN(name,bytes) .globl _/**/name
69 #else
70 #define EXTERN(name,bytes) .global _ ## name
71 #endif
72 #endif
73
74 EXTERN(foreign_function_call_active, 4)
75
76 EXTERN(current_control_stack_pointer, 4)
77 EXTERN(current_control_frame_pointer, 4)
78 #if !defined(ibmrt) && !defined(__i386__)
79 EXTERN(current_binding_stack_pointer, 4)
80 EXTERN(current_dynamic_space_free_pointer, 4)
81 #endif
82
83 #ifdef mips
84 EXTERN(current_flags_register, 4)
85 #endif
86
87 #endif LANGUAGE_ASSEMBLY
88
89 #endif _INCLUDED_GLOBALS_H_