diff --git a/bootfiles/19c/boot-2005-12-1-ppc.lisp b/bootfiles/19c/boot-2005-12-1-ppc.lisp new file mode 100644 index 0000000000000000000000000000000000000000..de3b2f9f89b842b61cf2eace720aede9055fe175 --- /dev/null +++ b/bootfiles/19c/boot-2005-12-1-ppc.lisp @@ -0,0 +1,5 @@ +;; This is a cross-compile script for ppc/darwin for moving the FDEFN +;; register. R10 is an integer arg register for calling C, so FDEFN +;; shouldn't be there. + +(load "target:tools/cross-scripts/cross-ppc-ppc-darwin") diff --git a/compiler/ppc/vm.lisp b/compiler/ppc/vm.lisp index f5e5faec95131e6b084efa654fba135a16c0ddc8..b7d438f09bd56a2f96db96e35b789498d9d7e4da 100644 --- a/compiler/ppc/vm.lisp +++ b/compiler/ppc/vm.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/vm.lisp,v 1.3 2004/07/25 18:15:52 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/vm.lisp,v 1.4 2005/12/11 03:45:36 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -45,6 +45,8 @@ (defreg zero 0) (defreg nsp 1) (defreg rtoc 2) ; May be "NULL" someday. +;; r3-r10 are used for the C calling convention. They should be +;; non-descriptors. (defreg nl0 3) (defreg nl1 4) (defreg nl2 5) @@ -52,7 +54,7 @@ (defreg nl4 7) (defreg nl5 8) (defreg nl6 9) -(defreg fdefn 10) +(defreg nl7 10) (defreg nargs 11) ;;; The following two registers were originally reversed in the PPC Linux ;;; port. Putting the address of the called function in GPR12 is however @@ -78,14 +80,14 @@ (defreg a3 27) (defreg l0 28) (defreg l1 29) -(defreg l2 30) +(defreg fdefn 30) (defreg lip 31) (defregset non-descriptor-regs - nl0 nl1 nl2 nl3 nl4 nl5 nl6 cfunc nargs nfp) + nl0 nl1 nl2 nl3 nl4 nl5 nl6 nl7 cfunc nargs nfp) (defregset descriptor-regs - fdefn a0 a1 a2 a3 ocfp lra cname lexenv l0 l1 l2 ) + fdefn a0 a1 a2 a3 ocfp lra cname lexenv l0 l1 ) (defregset register-arg-offsets a0 a1 a2 a3) diff --git a/lisp/ppc-assem.S b/lisp/ppc-assem.S index f5cb68bd915817e443e72cd9669e759b72a9a983..433d00a3f7f28db36c455cacfec8504679cae3aa 100644 --- a/lisp/ppc-assem.S +++ b/lisp/ppc-assem.S @@ -197,7 +197,7 @@ x: li reg_A3,0 li reg_L0,0 li reg_L1,0 - li reg_L2,0 +/* li reg_L2,0*/ li reg_LIP,0 lis reg_NULL,hi16(NIL) ori reg_NULL,reg_NULL,lo16(NIL) @@ -362,7 +362,7 @@ lra: li reg_A3,0 li reg_L0,0 li reg_L1,0 - li reg_L2,0 +/* li reg_L2,0*/ li reg_LIP,0 /* Atomic ... */ diff --git a/lisp/ppc-lispregs.h b/lisp/ppc-lispregs.h index 1514ab839032e688bd7913e6922902098ab7de96..3a55e0822e461189b2edf1b3efbc84b6182c2a47 100644 --- a/lisp/ppc-lispregs.h +++ b/lisp/ppc-lispregs.h @@ -25,7 +25,7 @@ #define reg_NL4 REG(7) #define reg_NL5 REG(8) #define reg_NL6 REG(9) -#define reg_FDEFN REG(10) /* Last (8th) FF param */ +#define reg_NL7 REG(10) /* Last (8th) FF param */ #define reg_NARGS REG(11) #define reg_CFUNC REG(12) /* Silly to blow a reg on FF-name */ #define reg_NFP REG(13) /* Lisp may save around FF-call */ @@ -45,7 +45,7 @@ #define reg_A3 REG(27) /* Last of (only) 4 arg regs */ #define reg_L0 REG(28) /* Tagged temp regs */ #define reg_L1 REG(29) -#define reg_L2 REG(30) /* Last lisp temp reg */ +#define reg_FDEFN REG(30) #define reg_LIP REG(31) /* Lisp Interior Pointer, e.g., locative */ /* @@ -63,7 +63,7 @@ #define reg_NL4_NUM 7 #define reg_NL5_NUM 8 #define reg_NL6_NUM 9 -#define reg_FDEFN_NUM 10 /* Last (8th) FF param */ +#define reg_NL7_NUM 10 /* Last (8th) FF param */ #define reg_NARGS_NUM 11 #define reg_CFUNC_NUM 12 /* Silly to blow a reg on FF-name */ #define reg_NFP_NUM 13 /* Lisp may save around FF-call */ @@ -83,23 +83,23 @@ #define reg_A3_NUM 27 /* Last of (only) 4 arg regs */ #define reg_L0_NUM 28 /* Tagged temp regs */ #define reg_L1_NUM 29 -#define reg_L2_NUM 30 /* Last lisp temp reg */ +#define reg_FDEFN_NUM 30 #define reg_LIP_NUM 31 /* Lisp Interior Pointer, e.g., locative */ #define REGNAMES \ "ZERO", "NSP", "POLL", "NL0", \ "NL1", "NL2", "NL3P", "NL4", \ - "NL5", "NL6", "FDEFN", "NARGS", \ + "NL5", "NL6", "NL7", "NARGS", \ "CFUNC", "NFP" "BSP", "CFP", \ "CSP", "ALLOC", "NULL", "CODE", \ "CNAME", "LEXENV", "OCFP", "LRA", \ "A0", "A1", "A2", "A3", \ - "L0", "L1", "L2", "LIP" + "L0", "L1", "FDEFN", "LIP" #define BOXED_REGISTERS { \ reg_FDEFN, reg_CODE, reg_CNAME, reg_LEXENV, reg_OCFP, reg_LRA, \ reg_A0, reg_A1, reg_A2, reg_A3, \ - reg_L0, reg_L1, reg_L2 \ + reg_L0, reg_L1 \ } #ifndef LANGUAGE_ASSEMBLY