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