Initial revision
[sbcl.git] / src / runtime / x86-lispregs.h
1 /*
2  * These register names and offsets correspond to definitions in
3  * compiler/x86/vm.lisp. They map into accessors in the OS-dependent
4  * POSIX signal context structure os_context_t via the
5  * os_context_register_addr(..) OS-dependent function.
6  */
7
8 /*
9  * This software is part of the SBCL system. See the README file for
10  * more information.
11  *
12  * This software is derived from the CMU CL system, which was
13  * written at Carnegie Mellon University and released into the
14  * public domain. The software is in the public domain and is
15  * provided with absolutely no warranty. See the COPYING and CREDITS
16  * files for more information.
17  */
18
19 /*
20  * $Header$
21  */
22
23 /* the number of registers visible as registers in the virtual machine
24  * (excludes stuff like segment registers) */
25 #define NREGS   (8)
26
27 #ifdef LANGUAGE_ASSEMBLY
28 #define REG(num) $ ## num
29 #else
30 #define REG(num) num
31 #endif
32
33 #define reg_EAX REG( 0)
34 #define reg_ECX REG( 2)
35 #define reg_EDX REG( 4)
36 #define reg_EBX REG( 6)
37 #define reg_ESP REG( 8)
38 #define reg_EBP REG(10)
39 #define reg_ESI REG(12)
40 #define reg_EDI REG(14)
41
42 #define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI"
43
44 /* classification of registers
45  *
46  * reg_SP = the register used by Lisp as stack pointer
47  * reg_FP = the register used by Lisp as frame pointer
48  * BOXED_REGISTERS =
49  *   the registers which may contain Lisp object pointers */
50 #define reg_SP reg_ESP
51 #define reg_FP reg_EBP
52 #define BOXED_REGISTERS {\
53   reg_EAX, reg_ECX, reg_EDX, reg_EBX, reg_ESI, reg_EDI \
54   }