0.8.5.47:
[sbcl.git] / src / runtime / sparc-lispregs.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 #define NREGS (32)
14
15 #ifdef LANGUAGE_ASSEMBLY
16 #define GREG(num) %g##num
17 #define OREG(num) %o##num
18 #define LREG(num) %l##num
19 #define IREG(num) %i##num
20
21 #else
22
23 #define GREG(num) (num)
24 #define OREG(num) ((num)+8)
25 #define LREG(num) ((num)+16)
26 #define IREG(num) ((num)+24)
27
28 #endif
29
30 #define reg_ZERO        GREG(0)
31 #define reg_ALLOC       GREG(1)
32 #define reg_NIL         GREG(2)
33 #define reg_CSP         GREG(3)
34 #define reg_CFP         GREG(4)
35 #define reg_BSP         GREG(5)
36 /* %g6 and %g7 are supposed to be reserved for the system */
37
38 #define reg_NL0         OREG(0)
39 #define reg_NL1         OREG(1)
40 #define reg_NL2         OREG(2)
41 #define reg_NL3         OREG(3)
42 #define reg_NL4         OREG(4)
43 #define reg_NL5         OREG(5)
44 #define reg_NSP         OREG(6)
45 #define reg_NARGS       OREG(7)
46
47 #define reg_A0          LREG(0)
48 #define reg_A1          LREG(1)
49 #define reg_A2          LREG(2)
50 #define reg_A3          LREG(3)
51 #define reg_A4          LREG(4)
52 #define reg_A5          LREG(5)
53 #define reg_OCFP        LREG(6)
54 #define reg_LRA         LREG(7)
55
56 #define reg_FDEFN       IREG(0)
57 #define reg_LEXENV      IREG(1)
58 #define reg_L0          IREG(2)
59 #define reg_NFP         IREG(3)
60 #define reg_CFUNC       IREG(4)
61 #define reg_CODE        IREG(5)
62 #define reg_LIP         IREG(7)
63
64 #define REGNAMES \
65         "ZERO",         "ALLOC",        "NULL",         "CSP", \
66         "CFP",          "BSP",          "%g6",          "%g7", \
67         "NL0",          "NL1",          "NL2",          "NL3", \
68         "NL4",          "NL5",          "NSP",          "NARGS", \
69         "A0",           "A1",           "A2",           "A3", \
70         "A4",           "A5",           "OCFP",         "LRA", \
71         "FDEFN",        "LEXENV",       "L0",           "NFP", \
72         "CFUNC",        "CODE",         "???",          "LIP"
73
74 #define BOXED_REGISTERS { \
75     reg_A0, reg_A1, reg_A2, reg_A3, reg_A4, reg_A5, reg_FDEFN, reg_LEXENV, \
76     reg_OCFP, reg_LRA, reg_L0, reg_CODE \
77 }