Changeset 5785


Ignore:
Timestamp:
Jan 23, 2007, 2:28:17 PM (18 years ago)
Author:
Gary Byers
Message:

Get FPRs from where subprim saved them.
Return FPRs in the same place. (Will need to re-work all of this
for platform-dependent structure stuff.)

Location:
trunk/ccl/compiler/PPC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/PPC/PPC32/ppc32-backend.lisp

    r5749 r5785  
    287287(defun defcallback-body-ppc32-poweropen (stack-ptr lets dynamic-extent-names decls body return-type error-return error-delta #+poweropen-target fp-arg-ptr)
    288288  (let* ((result (gensym))
    289          (offset (case return-type
    290                    ((:single-float :double-float)
    291                     8)
    292                    (t 0)))
     289         (return-ptr (case return-type
     290                       ((:single-float :double-float)
     291                        fp-arg-ptr)
     292                       (t stack-ptr)))
    293293         (condition-name (if (atom error-return) 'error (car error-return)))
    294294         (error-return-function (if (atom error-return) error-return (cadr error-return)))
    295295         (body
    296           `(%stack-block ((,fp-arg-ptr (* 8 13)))
    297             (%get-fp-arg-regs ,fp-arg-ptr)
     296          `(with-macptrs ((,fp-arg-ptr))
     297            (%setf-macptr ,fp-arg-ptr (%get-ptr ,stack-ptr (- ppc32::c-frame.unused-1 ppc32::c-frame.param0)))
    298298            (let ,lets
    299299              (declare (dynamic-extent ,@dynamic-extent-names))
     
    315315                                 (:unsigned-doubleword '%%get-unsigned-longlong)
    316316                                 ((:double-float :single-float) '%get-double-float)
    317                                  (t  '%get-long)) ,stack-ptr ,offset) ,result)))))))
     317                                 (t  '%get-long)) ,return-ptr 0) ,result)))))))
    318318    (if error-return
    319319      (let* ((cond (gensym)))
  • trunk/ccl/compiler/PPC/PPC64/ppc64-backend.lisp

    r5749 r5785  
    138138(defun defcallback-body-ppc64-poweropen (stack-ptr lets dynamic-extent-names decls body return-type error-return error-delta  fp-arg-ptr)
    139139  (let* ((result (gensym))
    140          (offset (case return-type
    141                    ((:single-float :double-float) 16)
    142                    (t 0)))
     140         (result-ptr (case return-type
     141                   ((:single-float :double-float) fp-arg-ptr)
     142                   (t stack-ptr)))
    143143         (condition-name (if (atom error-return) 'error (car error-return)))
    144144         (error-return-function (if (atom error-return) error-return (cadr error-return)))
    145145         (body
    146           `(%stack-block ((,fp-arg-ptr (* 8 13)))
    147             (%get-fp-arg-regs ,fp-arg-ptr)
     146          `(with-macptrs ((,fp-arg-ptr (%get-ptr ,stack-ptr (- ppc64::c-frame.unused-1 ppc64::c-frame.param0))))
    148147            (let ,lets
    149148              (declare (dynamic-extent ,@dynamic-extent-names))
     
    165164                                 (:unsigned-doubleword '%%get-unsigned-longlong)
    166165                                 ((:double-float :single-float) '%get-double-float)
    167                                  (t #+ppc32-target '%get-long
    168                                     #+ppc64-target '%%get-signed-longlong)) ,stack-ptr ,offset) ,result)))))))
     166                                 (t '%%get-signed-longlon )) ,result-ptr 0) ,result)))))))
    169167    (if error-return
    170168      (let* ((cond (gensym)))
Note: See TracChangeset for help on using the changeset viewer.