| a173edfb |
1 | /* x86-lispregs.h -*- Mode: C; -*- |
| eeab7066 |
2 | |
| a173edfb |
3 | */ |
| 4 | |
| 5 | /* These register names and offsets correspond to definitions |
| 6 | * in compiler/amd64/vm.lisp. They map into accessors in the |
| 7 | * os dependent <machine/signal.h> structure via the sc_reg |
| 8 | * os dependent function. |
| 9 | */ |
| 10 | |
| e67c0397 |
11 | #ifndef _AMD64_LISPREGS_H_ |
| 12 | #define _AMD64_LISPREGS_H_ |
| 13 | |
| 3325871e |
14 | #define NREGS (16) |
| a173edfb |
15 | |
| 16 | #ifdef LANGUAGE_ASSEMBLY |
| 17 | #define REG(num) $ ## num |
| 18 | #else |
| 19 | #define REG(num) num |
| 20 | #endif |
| 21 | |
| 22 | #define reg_RAX REG( 0) |
| 23 | #define reg_RCX REG( 2) |
| 24 | #define reg_RDX REG( 4) |
| 25 | #define reg_RBX REG( 6) |
| 26 | #define reg_RSP REG( 8) |
| 27 | #define reg_RBP REG(10) |
| 28 | #define reg_RSI REG(12) |
| 29 | #define reg_RDI REG(14) |
| 3325871e |
30 | #define reg_R8 REG(16) |
| 31 | #define reg_R9 REG(18) |
| 32 | #define reg_R10 REG(20) |
| 33 | #define reg_R11 REG(22) |
| 34 | #define reg_R12 REG(24) |
| 35 | #define reg_R13 REG(26) |
| 36 | #define reg_R14 REG(28) |
| 37 | #define reg_R15 REG(30) |
| a173edfb |
38 | |
| 39 | #define reg_SP reg_RSP |
| 40 | #define reg_FP reg_RBP |
| 3e4590e7 |
41 | #define reg_NARGS reg_RCX |
| a173edfb |
42 | |
| 3325871e |
43 | #define REGNAMES "RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15" |
| a173edfb |
44 | |
| 45 | /* These registers can contain lisp object pointers */ |
| 46 | #define BOXED_REGISTERS {\ |
| 3325871e |
47 | reg_RAX, reg_RCX, reg_RDX, reg_RBX, reg_RSI, reg_RDI, reg_R8, reg_R9, reg_R10, reg_R11, reg_R12, reg_R13, reg_R14, reg_R15 \ |
| a173edfb |
48 | } |
| 49 | |
| 50 | /* N is offset in storage class (SC) as defined in vm.lisp. |
| 51 | * Ordering in sigcontext is probably os dependent so let |
| 52 | * xxx-os.c handle it. |
| 53 | */ |
| 54 | |
| d01310f2 |
55 | #define SC_REG(sc, n) (*sc_reg(sc,n)) |
| 56 | #define SC_PC(sc) ((sc)->sc_pc) |
| a173edfb |
57 | |
| e67c0397 |
58 | #endif /* _AMD64_LISPREGS_H_ */ |