+ EXIT
+ (let ((fixup (make-fixup 'unwind :assembly-routine)))
+ (inst ldil fixup fix)
+ (inst ble fixup lisp-heap-space fix))
+ (move catch target t))
+
+; we need closure-tramp and funcallable-instance-tramp in
+; same space as other lisp-code, because caller is doing
+; normal lisp-calls where we doesnt specify space.
+; if we doesnt have the lisp-function (code from defun, closure, lambda etc..)
+; machine-address, resolve it here and jump to it.
+(define-assembly-routine
+ (closure-tramp (:return-style :none))
+ ((:temp lip interior-reg lip-offset)
+ (:temp nl0 descriptor-reg nl0-offset))
+ (inst ldw (- (* fdefn-fun-slot n-word-bytes)
+ other-pointer-lowtag)
+ fdefn-tn lexenv-tn)
+ (inst ldw (- (* closure-fun-slot n-word-bytes)
+ fun-pointer-lowtag)
+ lexenv-tn nl0)
+ (inst addi (- (* simple-fun-code-offset n-word-bytes)
+ fun-pointer-lowtag)
+ nl0 lip)
+ (inst bv lip :nullify t))