Changeset 9409


Ignore:
Timestamp:
May 9, 2008, 3:25:06 AM (11 years ago)
Author:
rme
Message:

xp-argument-list, handle-udf-call for x8632.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/level-1/x86-error-signal.lisp

    r9402 r9409  
    2727  (encoded-gpr-lisp xp target::nargs))
    2828
    29 
     29#+x8664-target
    3030(defun xp-argument-list (xp)
    3131  (let ((nargs (xp-argument-count xp))
     
    4545                   (push (%get-object sp (* i x8664::node-size)) args))
    4646                 args)))))))
    47                          
     47
     48#+x8632-target
     49(defun xp-argument-list (xp)
     50  (let ((nargs (xp-argument-count xp))
     51        (arg-y (encoded-gpr-lisp xp x8632::arg_y))
     52        (arg-z (encoded-gpr-lisp xp x8632::arg_z)))
     53    (cond ((eql nargs 0) nil)
     54          ((eql nargs 1) (list arg-z))
     55          (t
     56           (let ((args (list arg-y arg-z)))
     57             (if (eql nargs 2)
     58               args
     59               (let ((sp (%inc-ptr (encoded-gpr-macptr xp x8632::esp)
     60                                   (+ x8632::node-size x8632::xcf.size))))
     61                 (dotimes (i (- nargs 2))
     62                   (push (%get-object sp (* i x8632::node-size)) args))
     63                 args)))))))
     64
    4865;;; Making this be continuable is hard, because of the xcf on the
    4966;;; stack and the way that the kernel saves/restores rsp and rbp
     
    5976                  (%kernel-restart-internal
    6077                   $xudfcall
    61                    (list (encoded-gpr-lisp xp x8664::fname) args)
     78                   (list (encoded-gpr-lisp xp target::fname) args)
    6279                   frame-ptr)))
    6380         (f #'(lambda (values) (apply #'values values))))
    64     (setf (encoded-gpr-lisp xp x8664::arg_z) values
    65           (encoded-gpr-lisp xp x8664::fn) f)))
     81    (setf (encoded-gpr-lisp xp target::arg_z) values
     82          (encoded-gpr-lisp xp target::fn) f)))
    6683
    6784#+x8664-target
Note: See TracChangeset for help on using the changeset viewer.