X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fsystem.lisp;h=fd14fbfac26c8f1c97c06c003291632b43503839;hb=97535256efa8ab0edefca516b2553efcccf3e2ec;hp=9b66ca0a565f9ddf44b2a7cf488feb36cdccb050;hpb=7deecae2d959173eda6a153d490c752c32050a9e;p=sbcl.git diff --git a/src/compiler/x86/system.lisp b/src/compiler/x86/system.lisp index 9b66ca0..fd14fbf 100644 --- a/src/compiler/x86/system.lisp +++ b/src/compiler/x86/system.lisp @@ -352,3 +352,36 @@ number of CPU cycles elapsed as secondary value. EXPERIMENTAL." (:info index) (:generator 0 (inst inc (make-ea-for-vector-data count-vector :offset index)))) + +;;;; Memory barrier support + +#!+memory-barrier-vops +(define-vop (%compiler-barrier) + (:policy :fast-safe) + (:translate %compiler-barrier) + (:generator 3)) + +#!+memory-barrier-vops +(define-vop (%memory-barrier) + (:policy :fast-safe) + (:translate %memory-barrier) + (:generator 3 + (inst add (make-ea :dword :base esp-tn) 0 :lock))) + +#!+memory-barrier-vops +(define-vop (%read-barrier) + (:policy :fast-safe) + (:translate %read-barrier) + (:generator 3)) + +#!+memory-barrier-vops +(define-vop (%write-barrier) + (:policy :fast-safe) + (:translate %write-barrier) + (:generator 3)) + +#!+memory-barrier-vops +(define-vop (%data-dependency-barrier) + (:policy :fast-safe) + (:translate %data-dependency-barrier) + (:generator 3))