X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Fc-call.lisp;h=340600ae1812a3f92ecf220e4e01ed56a3c3899a;hb=74cf7a4d01664fbf72a662ba093ad67ca243b524;hp=1d75529c338a71fa546f563fca37566ba353eb83;hpb=e119a2f79cf36039a39996f5490934b4d927529a;p=sbcl.git diff --git a/src/compiler/ppc/c-call.lisp b/src/compiler/ppc/c-call.lisp index 1d75529..340600a 100644 --- a/src/compiler/ppc/c-call.lisp +++ b/src/compiler/ppc/c-call.lisp @@ -195,7 +195,7 @@ (values 'unsigned-byte-32 'unsigned-reg)) (my-make-wired-tn ptype reg-sc (result-reg-offset num-results))))) -(!def-vm-support-routine make-call-out-tns (type) +(defun make-call-out-tns (type) (declare (type alien-fun-type type)) (let ((arg-state (make-arg-state))) (collect ((arg-tns)) @@ -265,12 +265,6 @@ (new-arg-types (parse-alien-type '(unsigned 32) (sb!kernel:make-null-lexenv)))) - ((alien-integer-type-p type) - (if (< gprs 8) - (incf gprs 1) - (incf stack 1)) - (new-args arg) - (new-arg-types type)) ((alien-single-float-type-p type) (if (< fprs 8) (incf fprs) @@ -285,7 +279,10 @@ (incf stack 2))) ; the stack. (new-args arg) (new-arg-types type)) - (t + (t ;; integer or SAP + (if (< gprs 8) + (incf gprs 1) + (incf stack 1)) (new-args arg) (new-arg-types type))))) (cond ((and (alien-integer-type-p result-type) @@ -663,7 +660,11 @@ (inst stwu stack-pointer stack-pointer (- frame-size)) ;; And make the call. - (load-address-into r0 (foreign-symbol-address "funcall3")) + (load-address-into + r0 + (foreign-symbol-address + #!-sb-safepoint "funcall3" + #!+sb-safepoint "callback_wrapper_trampoline")) (inst mtlr r0) (inst blrl)