X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Fc-call.lisp;h=286988398e4ebb30d1d237b471ddfb853d3d4e6c;hb=ac97b7229f874d5d3ad5000411168af2a31834ec;hp=46c76a12560e68ff0d5ce05ac3763cde386c2534;hpb=4e6200853a661da5e73d0843a4afca9077a06fa8;p=sbcl.git diff --git a/src/compiler/ppc/c-call.lisp b/src/compiler/ppc/c-call.lisp index 46c76a1..2869883 100644 --- a/src/compiler/ppc/c-call.lisp +++ b/src/compiler/ppc/c-call.lisp @@ -63,7 +63,7 @@ ;;; a double. ;;; ;;; gcc does: -;;; +;;; ;;; Excess floats stored on the stack are stored as floats. ;;; ;;; We follow gcc. @@ -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) @@ -428,6 +425,7 @@ (define-vop (alloc-number-stack-space) (:info amount) (:results (result :scs (sap-reg any-reg))) + (:result-types system-area-pointer) (:temporary (:scs (unsigned-reg) :to (:result 0)) temp) (:generator 0 (unless (zerop amount)