X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fc-call.lisp;h=e44100311e6193b81a8edb2187770519d4767d8d;hb=2287399f246955badf9d61bf123145e76eaf884d;hp=38a8fe262ad1326e014e1c0380775c328de26a22;hpb=471a5d32673a4c0db86949424d624e6ea3a6a633;p=sbcl.git diff --git a/src/compiler/x86/c-call.lisp b/src/compiler/x86/c-call.lisp index 38a8fe2..e441003 100644 --- a/src/compiler/x86/c-call.lisp +++ b/src/compiler/x86/c-call.lisp @@ -279,6 +279,8 @@ (unless (zerop amount) (let ((delta (logandc2 (+ amount 3) 3))) (inst sub esp-tn delta))) + ;; C stack should probably be 16 byte aligned on Darwin + #!+darwin (inst and esp-tn -16) (move result esp-tn))) (define-vop (dealloc-number-stack-space) @@ -304,7 +306,7 @@ (ash symbol-tls-index-slot word-shift) (- other-pointer-lowtag)))) (inst fs-segment-prefix) - (inst sub (make-ea :dword :scale 1 :index temp) delta))) + (inst sub (make-ea :dword :base temp) delta))) (load-tl-symbol-value result *alien-stack*)) #!-sb-thread (:generator 0 @@ -328,12 +330,12 @@ (let ((delta (logandc2 (+ amount 3) 3))) (inst mov temp (make-ea :dword - :disp (+ nil-value - (static-symbol-offset '*alien-stack*) + :disp (+ nil-value + (static-symbol-offset '*alien-stack*) (ash symbol-tls-index-slot word-shift) (- other-pointer-lowtag)))) (inst fs-segment-prefix) - (inst add (make-ea :dword :scale 1 :index temp) delta)))) + (inst add (make-ea :dword :base temp) delta)))) #!-sb-thread (:generator 0 (unless (zerop amount)