%other-pointer-widetag derive-type: derive for simple-array.
[sbcl.git] / src / runtime / ppc64-lispregs.h
blob7fefc085e4ff55d0cd20379387c7af8a95cb60d4
1 #if defined LISP_FEATURE_DARWIN
2 #if defined __ASSEMBLER__
3 #define REG(num) r##num
4 #define FREG(num) f##num
5 #else
6 #define REG(num) num
7 #define FREG(num) num
8 #endif
9 #else
10 #define REG(num) num
11 #define FREG(num) num
12 #endif
14 #define NREGS 32
16 // We should probably eliminate uses of the wired 0 register and use r0
17 // as the NIL value. It's not wired to 0 in hardware, and we seldom use it in
18 // ways that would be sensitive to its unusual nature (effectively a wired 0)
19 // regarding load/store and some other instructions.
20 #define reg_ZERO REG(0) /* Should always contain 0 in lisp */
21 #define reg_NSP REG(1) /* The number/C stack pointer */
22 #define reg_TOC REG(2) /* ABI-reserved GOT + small data pointer */
23 #define reg_NL0 REG(3) /* FF param/result 1 */
24 #define reg_NL1 REG(4) /* FF param/result 2 */
25 #define reg_NL2 REG(5) /* FF param 3 */
26 #define reg_NL3 REG(6)
27 #define reg_NL4 REG(7)
28 #define reg_NL5 REG(8)
29 #define reg_NL6 REG(9) /* Last (7th) FF param */
30 #define reg_FDEFN REG(10) /* was NL7 until recently -dan */
31 #define reg_NARGS REG(11)
32 #define reg_CFUNC REG(12) /* Silly to blow a reg on FF-name */
33 // r13 is as if it does not exist
34 #define reg_BSP REG(14) /* Binding stack pointer */
35 #define reg_CFP REG(15) /* Control/value stack frame pointer */
36 #define reg_CSP REG(16) /* Control/value stack top */
37 #define reg_CARDTABLE REG(17) /* GC Card Table address */
38 #define reg_NULL REG(18) /* NIL and globals nearby */
39 #define reg_CODE REG(19) /* Current function object */
40 #define reg_NFP REG(20) /* Lisp may save around FF-call */
41 #define reg_LEXENV REG(21) /* And why burn a register for this ? */
42 #define reg_OCFP REG(22) /* The caller's reg_CFP */
43 #define reg_LRA REG(23) /* Tagged lisp return address */
44 #define reg_A0 REG(24) /* First function arg/return value */
45 #define reg_A1 REG(25) /* Second. */
46 #define reg_A2 REG(26) /* */
47 #define reg_A3 REG(27) /* Last of (only) 4 arg regs */
48 #define reg_L0 REG(28) /* Tagged temp regs */
49 #define reg_L1 REG(29)
50 #define reg_THREAD REG(30) /* TLS block pointer */
51 #define reg_LIP REG(31) /* Lisp Interior Pointer, e.g., locative */