X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fsystem.lisp;h=429116490b52d7334e54c5428fba21360605f7bb;hb=079ef9dad558ca07cb8178ef428bf738112174fa;hp=753f21819363c894bd44546d5fa38479c9b4cd67;hpb=e33fb894f991b2926d8f3bace9058e4c0b2c3a37;p=sbcl.git diff --git a/src/compiler/x86/system.lisp b/src/compiler/x86/system.lisp index 753f218..4291164 100644 --- a/src/compiler/x86/system.lisp +++ b/src/compiler/x86/system.lisp @@ -61,8 +61,8 @@ DONE (inst movzx result al-tn))) -(define-vop (function-subtype) - (:translate function-subtype) +(define-vop (fun-subtype) + (:translate fun-subtype) (:policy :fast-safe) (:args (function :scs (descriptor-reg))) (:temporary (:sc byte-reg :from (:eval 0) :to (:eval 1)) temp) @@ -72,8 +72,8 @@ (load-type temp function (- fun-pointer-lowtag)) (inst movzx result temp))) -(define-vop (set-function-subtype) - (:translate (setf function-subtype)) +(define-vop (set-fun-subtype) + (:translate (setf fun-subtype)) (:policy :fast-safe) (:args (type :scs (unsigned-reg) :target eax) (function :scs (descriptor-reg))) @@ -163,7 +163,7 @@ (:translate binding-stack-pointer-sap) (:policy :fast-safe) (:generator 1 - (load-symbol-value int *binding-stack-pointer*))) + (load-tl-symbol-value int *binding-stack-pointer*))) (defknown (setf binding-stack-pointer-sap) (system-area-pointer) system-area-pointer ()) @@ -173,10 +173,11 @@ (:arg-types system-area-pointer) (:results (int :scs (sap-reg))) (:result-types system-area-pointer) + #!+sb-thread (:temporary (:sc any-reg) temp) (:translate (setf binding-stack-pointer-sap)) (:policy :fast-safe) (:generator 1 - (store-symbol-value new-value *binding-stack-pointer*) + (store-tl-symbol-value new-value *binding-stack-pointer* temp) (move int new-value))) (define-vop (control-stack-pointer-sap) @@ -201,7 +202,7 @@ (inst lea sap (make-ea :byte :base code :index sap :scale 4 :disp (- other-pointer-lowtag))))) -(define-vop (compute-function) +(define-vop (compute-fun) (:args (code :scs (descriptor-reg) :to (:result 0)) (offset :scs (signed-reg unsigned-reg) :to (:result 0))) (:arg-types * positive-fixnum) @@ -266,13 +267,29 @@ ;;;; other miscellaneous VOPs -(defknown sb!unix::do-pending-interrupt () (values)) -(define-vop (sb!unix::do-pending-interrupt) +(defknown sb!unix::receive-pending-interrupt () (values)) +(define-vop (sb!unix::receive-pending-interrupt) (:policy :fast-safe) - (:translate sb!unix::do-pending-interrupt) + (:translate sb!unix::receive-pending-interrupt) (:generator 1 (inst break pending-interrupt-trap))) +#!+sb-thread +(defknown current-thread-offset-sap ((unsigned-byte 32)) + system-area-pointer (flushable)) + +#!+sb-thread +(define-vop (current-thread-offset-sap) + (:results (sap :scs (sap-reg))) + (:result-types system-area-pointer) + (:translate current-thread-offset-sap) + (:args (n :scs (unsigned-reg) :target sap)) + (:arg-types unsigned-num) + (:policy :fast-safe) + (:generator 2 + (inst fs-segment-prefix) + (inst mov sap (make-ea :dword :disp 0 :index n :scale 4)))) + (define-vop (halt) (:generator 1 (inst break halt-trap)))