1.0.23.59: bug 3b has been fixed a while now
[sbcl/tcr.git] / src / runtime / x86-lispregs.h
blobf8709e8ed40e06d42db7420b52d0e1bdb5344f0c
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 */
8 /*
9 * This software is part of the SBCL system. See the README file for
10 * more information.
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.
19 /* the number of registers visible as registers in the virtual machine
20 * (excludes stuff like segment registers) */
21 #define NREGS (8)
23 #ifdef LANGUAGE_ASSEMBLY
24 #define REG(num) $ ## num
25 #else
26 #define REG(num) num
27 #endif
29 #define reg_EAX REG( 0)
30 #define reg_ECX REG( 2)
31 #define reg_EDX REG( 4)
32 #define reg_EBX REG( 6)
33 #define reg_ESP REG( 8)
34 #define reg_EBP REG(10)
35 #define reg_ESI REG(12)
36 #define reg_EDI REG(14)
37 #define reg_UESP REG(16)
39 #define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "UESP"
41 /* classification of registers
43 * reg_SP = the register used by Lisp as stack pointer
44 * reg_FP = the register used by Lisp as frame pointer
45 * BOXED_REGISTERS =
46 * the registers which may contain Lisp object pointers */
47 #define reg_SP reg_ESP
48 #define reg_FP reg_EBP
49 #define BOXED_REGISTERS {\
50 reg_EAX, reg_ECX, reg_EDX, reg_EBX, reg_ESI, reg_EDI \