X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fmacros.lisp;h=48224fbe3dfe1bd0b6199e523d19b585a5b24817;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=6acfca87bdd4d8b0f6ca35df22f127e8628136bb;hpb=e4542bc034db18cf98f005b2dac53a6d7d5c7260;p=sbcl.git diff --git a/src/compiler/x86/macros.lisp b/src/compiler/x86/macros.lisp index 6acfca8..48224fb 100644 --- a/src/compiler/x86/macros.lisp +++ b/src/compiler/x86/macros.lisp @@ -108,6 +108,25 @@ (declare (ignore temp)) `(store-symbol-value ,reg ,symbol)) +(defmacro load-binding-stack-pointer (reg) + #!+sb-thread + `(progn + (inst fs-segment-prefix) + (inst mov ,reg (make-ea :dword + :disp (* 4 thread-binding-stack-pointer-slot)))) + #!-sb-thread + `(load-symbol-value ,reg *binding-stack-pointer*)) + +(defmacro store-binding-stack-pointer (reg) + #!+sb-thread + `(progn + (inst fs-segment-prefix) + (inst mov (make-ea :dword + :disp (* 4 thread-binding-stack-pointer-slot)) + ,reg)) + #!-sb-thread + `(store-symbol-value ,reg *binding-stack-pointer*)) + (defmacro load-type (target source &optional (offset 0)) #!+sb-doc "Loads the type bits of a pointer into target independent of