0.8.14.5: Join the foreign legion!
[sbcl.git] / src / compiler / sparc / c-call.lisp
index 7c9eb6e..bcb126c 100644 (file)
                           ,@(new-args))))))
        (sb!c::give-up-ir1-transform))))
 
-
 (define-vop (foreign-symbol-address)
   (:translate foreign-symbol-address)
   (:policy :fast-safe)
   (:args)
-  (:arg-types (:constant simple-base-string))
+  (:arg-types (:constant simple-string))
+  (:info foreign-symbol)
+  (:results (res :scs (sap-reg)))
+  (:result-types system-area-pointer)
+  (:generator 2
+    (inst li res (make-fixup (extern-alien-name foreign-symbol) 
+                             :foreign))))
+
+#!+linkage-table
+(define-vop (foreign-symbol-dataref-address)
+  (:translate foreign-symbol-dataref-address)
+  (:policy :fast-safe)
+  (:args)
+  (:arg-types (:constant simple-string))
   (:info foreign-symbol)
   (:results (res :scs (sap-reg)))
   (:result-types system-area-pointer)
+  (:temporary (:scs (non-descriptor-reg)) addr)
   (:generator 2
-    (inst li res (make-fixup (extern-alien-name foreign-symbol)
-                            :foreign))))
+    (inst li addr (make-fixup (extern-alien-name foreign-symbol) 
+                              :foreign-dataref))
+    (loadw res addr)))
 
 (define-vop (call-out)
   (:args (function :scs (sap-reg) :target cfunc)