0.6.12.3:
[sbcl.git] / src / runtime / alpha-lispregs.h
1
2 #define NREGS   (32)
3
4 #ifdef LANGUAGE_ASSEMBLY
5 #define REG(num) $##num
6 #else
7 #define REG(num) num
8 #endif
9                                 /* "traditional" register name and use */
10                                 /* courtesy of <alpha/regdef.h> */
11 #define reg_LIP REG(0)          /* v0 */
12 #define reg_A0 REG(1)           /* t0 - temporary (caller-saved) */
13 #define reg_A1 REG(2)           /* t1 */
14 #define reg_A2 REG(3)           /* t2 */
15 #define reg_A3 REG(4)           /* t3 */
16 #define reg_A4 REG(5)           /* t4 */
17 #define reg_A5 REG(6)           /* t5 */
18 #define reg_L0 REG(7)           /* t6 */
19 #define reg_NARGS REG(8)        /* t7 */
20 #define reg_CSP REG(9)          /* s0 - saved (callee-saved) */
21 #define reg_CFP REG(10)         /* s1 */
22 #define reg_OCFP REG(11)        /* s2 */
23 #define reg_BSP REG(12)         /* s3 */
24 #define reg_LEXENV REG(13)      /* s4 */
25 #define reg_CODE REG(14)        /* s5 */
26 #define reg_NULL REG(15)        /* s6 = fp (frame pointer) */
27 #define reg_NL0 REG(16)         /* a0 - argument (caller-saved) */
28 #define reg_NL1 REG(17)         /* a1 */
29 #define reg_NL2 REG(18)         /* a2 */
30 #define reg_NL3 REG(19)         /* a3 */
31 #define reg_NL4 REG(20)         /* a4 */
32 #define reg_NL5 REG(21)         /* a5 */
33 #define reg_ALLOC REG(22)       /* t8 - more temps (caller-saved) */
34 #define reg_FDEFN REG(23)       /* t9 */
35 #define reg_CFUNC REG(24)       /* t10 */
36 #define reg_NFP REG(25)         /* t11 */
37 #define reg_LRA REG(26)         /* ra - return address */
38 #define reg_L1 REG(27)          /* t12, or pv - procedure variable */
39 #define reg_L2 REG(28)          /* at - assembler temporary */
40 #define reg_GP REG(29)          /* global pointer */
41 #define reg_NSP REG(30)         /* sp - stack pointer */
42 #define reg_ZERO REG(31)        /* reads as zero, writes are noops */
43
44
45 #define REGNAMES \
46     "LIP", "A0", "A1", "A2", "A3", "A4", "A5", "L0", "NARGS",  \
47     "CSP", "CFP", "OCFP", "BSP", "LEXENV", "CODE", "NULL", \
48     "NL0", "NL1", "NL2", "NL3", "NL4", "NL5", "ALLOC", "FDEFN", \
49     "CFUNC", "NFP", "LRA", "L1", "L2", "GP", "NSP", "ZERO"
50
51 #define BOXED_REGISTERS { \
52     reg_CODE, reg_FDEFN, reg_LEXENV, reg_NARGS, reg_OCFP, reg_LRA, \
53     reg_A0, reg_A1, reg_A2, reg_A3, reg_A4, reg_A5, \
54     reg_L0, reg_L1, reg_L2 \
55 }
56
57
58 #define call_into_lisp_LRA_page 0x10000