diff --git a/compiler/amd64/macros.lisp b/compiler/amd64/macros.lisp index fe0ae8957cd0fd7113bd2ba52c7f91f579b697cd..4f8cd90eaed6e08b4ab7c9b89ae7668e5ed870df 100644 --- a/compiler/amd64/macros.lisp +++ b/compiler/amd64/macros.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/amd64/macros.lisp,v 1.4 2004/07/14 20:58:45 cwang Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/amd64/macros.lisp,v 1.5 2004/07/15 17:57:54 cwang Exp $") ;;; ;;; ********************************************************************** ;;; @@ -212,6 +212,8 @@ ;; C call to allocate via dispatch routines. Each destination has a ;; special entry point. The size may be a register or a constant. ;; This is used only if space is more important than speed. + ;; Since linkage table will trash r11, the easiest solution is to make sure temp-tn is r11 + (assert (= (tn-offset temp-tn) #.r11-offset)) (ecase (tn-offset alloc-tn) (#.rax-offset (load-size alloc-tn rax-tn size) @@ -249,10 +251,7 @@ (load-size alloc-tn r10-tn size) (inst mov-imm temp-tn (make-fixup (extern-alien-name "alloc_to_r10") :foreign))) - (#.r11-offset - (load-size alloc-tn r11-tn size) - (inst mov-imm temp-tn (make-fixup (extern-alien-name "alloc_to_r11") - :foreign))) + ;; no r11 (#.r12-offset (load-size alloc-tn r12-tn size) (inst mov-imm temp-tn (make-fixup (extern-alien-name "alloc_to_r12")