diff --git a/code/c-call.lisp b/code/c-call.lisp
index 9e7143a227bd7ad36d3aea193fa4b6b8cc38e90f..c2967ecee9a6eb0affaab43107b80c7086419a4c 100644
--- a/code/c-call.lisp
+++ b/code/c-call.lisp
@@ -819,14 +819,18 @@
       `(progn
 	 (defparameter ,symbol
 	   (make-alien ',c-type ,c-size
-		       (%primitive c::foreign-symbol-address ,name)))
+		       (truly-the system-area-pointer
+				  (%primitive c::foreign-symbol-address
+					      ,name))))
 	 (eval-when ,*alien-eval-when*
 	   (setf (info variable alien-value ',symbol)
 		 (lisp::make-ct-a-val
 		  :type ',c-type
 		  :size ,c-size
 		  :offset 0
-		  :sap '(%primitive c::foreign-symbol-address ,name)
+		  :sap '(truly-the system-area-pointer
+				   (%primitive c::foreign-symbol-address
+					       ,name))
 		  :alien ',symbol)))))))
 
 #|