(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))
(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)
(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)
(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)