1.0.42.33: ppc: Improve pseudo-atomic implementation
[sbcl.git] / src / compiler / ppc / static-fn.lisp
index 2842087..2e8bf7b 100644 (file)
@@ -19,6 +19,8 @@
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:temporary (:scs (descriptor-reg)) move-temp)
   (:temporary (:sc descriptor-reg :offset lra-offset) lra)
+  (:temporary (:sc descriptor-reg :offset fdefn-offset) fdefn)
+  (:temporary (:scs (descriptor-reg)) function)
   (:temporary (:sc interior-reg :offset lip-offset) entry-point)
   (:temporary (:sc any-reg :offset nargs-offset) nargs)
   (:temporary (:sc any-reg :offset ocfp-offset) old-fp)
@@ -78,7 +80,9 @@
            (let ((lra-label (gen-label))
                  (cur-nfp (current-nfp-tn vop)))
              ,@(moves (temp-names) (arg-names))
-             (inst lwz entry-point null-tn (static-fun-offset symbol))
+             (inst addi fdefn null-tn (static-fdefn-offset symbol))
+             (loadw function fdefn fdefn-fun-slot other-pointer-lowtag)
+             (loadw entry-point fdefn fdefn-raw-addr-slot other-pointer-lowtag)
              (inst lr nargs (fixnumize ,num-args))
              (when cur-nfp
                (store-stack-tn nfp-save cur-nfp))