X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86-64%2Fsupport.lisp;h=fb18d8a489fb9ab108a9b6082f14499296020a09;hb=922fe0d6da0e4bdcd366f5101395670aabd14e62;hp=8f5e2390a00e4f8f908910f599d04c8df0538c66;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/assembly/x86-64/support.lisp b/src/assembly/x86-64/support.lisp index 8f5e239..fb18d8a 100644 --- a/src/assembly/x86-64/support.lisp +++ b/src/assembly/x86-64/support.lisp @@ -13,24 +13,24 @@ (ecase style (:raw (values - `((inst lea r13-tn + `((inst lea temp-reg-tn (make-ea :qword :disp (make-fixup ',name :assembly-routine))) - (inst call r13-tn)) + (inst call temp-reg-tn)) nil)) (:full-call (values `((note-this-location ,vop :call-site) - (inst lea r13-tn + (inst lea temp-reg-tn (make-ea :qword :disp (make-fixup ',name :assembly-routine))) - (inst call r13-tn) + (inst call temp-reg-tn) (note-this-location ,vop :single-value-return) - (move rsp-tn rbx-tn)) + (inst cmov :c rsp-tn rbx-tn)) '((:save-p :compute-only)))) (:none (values - `((inst lea r13-tn + `((inst lea temp-reg-tn (make-ea :qword :disp (make-fixup ',name :assembly-routine))) - (inst jmp r13-tn)) + (inst jmp temp-reg-tn)) nil)))) (!def-vm-support-routine generate-return-sequence (style) @@ -38,9 +38,6 @@ (:raw `(inst ret)) (:full-call - `( - (inst pop rax-tn) - - (inst add rax-tn 3) - (inst jmp rax-tn))) + `((inst clc) + (inst ret))) (:none)))