(ecase style
(:raw
(values
- `((inst lea r13-tn
- (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
- (inst call r13-tn))
+ `((inst lea temp-reg-tn
+ (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
+ (inst call temp-reg-tn))
nil))
(:full-call
(values
`((note-this-location ,vop :call-site)
- (inst lea r13-tn
- (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
- (inst call r13-tn)
- (note-this-location ,vop :single-value-return)
- (move rsp-tn rbx-tn))
+ (inst lea temp-reg-tn
+ (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
+ (inst call temp-reg-tn)
+ (note-this-location ,vop :single-value-return)
+ (inst cmov :c rsp-tn rbx-tn))
'((:save-p :compute-only))))
(:none
(values
- `((inst lea r13-tn
- (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
- (inst jmp r13-tn))
+ `((inst lea temp-reg-tn
+ (make-ea :qword :disp (make-fixup ',name :assembly-routine)))
+ (inst jmp temp-reg-tn))
nil))))
(!def-vm-support-routine generate-return-sequence (style)
(:raw
`(inst ret))
(:full-call
- `(
- (inst pop rax-tn)
-
- (inst add rax-tn 3)
- (inst jmp rax-tn)))
+ `((inst clc)
+ (inst ret)))
(:none)))