diff --git a/lisp/amd64-lispregs.h b/lisp/amd64-lispregs.h new file mode 100644 index 0000000000000000000000000000000000000000..cd2ace5d25fb1acf74b637b15d1b70aa5017b30e --- /dev/null +++ b/lisp/amd64-lispregs.h @@ -0,0 +1,45 @@ +/* x86-lispregs.h -*- Mode: C; -*- + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/amd64-lispregs.h,v 1.1 2004/05/18 22:06:04 cwang Exp $ + */ + +/* These register names and offsets correspond to definitions + * in compiler/amd64/vm.lisp. They map into accessors in the + * os dependent <machine/signal.h> structure via the sc_reg + * os dependent function. + */ + +#define NREGS (8) + +#ifdef LANGUAGE_ASSEMBLY +#define REG(num) $ ## num +#else +#define REG(num) num +#endif + +#define reg_RAX REG( 0) +#define reg_RCX REG( 2) +#define reg_RDX REG( 4) +#define reg_RBX REG( 6) +#define reg_RSP REG( 8) +#define reg_RBP REG(10) +#define reg_RSI REG(12) +#define reg_RDI REG(14) + +#define reg_SP reg_RSP +#define reg_FP reg_RBP + +#define REGNAMES "RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI" + +/* These registers can contain lisp object pointers */ +#define BOXED_REGISTERS {\ + reg_RAX, reg_RCX, reg_RDX, reg_RBX, reg_RSI, reg_RDI \ + } + +/* N is offset in storage class (SC) as defined in vm.lisp. + * Ordering in sigcontext is probably os dependent so let + * xxx-os.c handle it. + */ + +#define SC_REG(sc, n) sc_reg(sc,n) +#define SC_PC(sc) ((sc)->sc_pc) +