diff --git a/asdf.lisp b/asdf.lisp
index 3d2fce9..57ba661 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -558,6 +558,17 @@ pathnames."
     :unless (eq k key)
     :append (list k v)))
 
+#+mcl
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (ccl:define-entry-point (_getenv "getenv") ((name :string)) :string))
+
+#+mcl
+(defun* %getenv (x)
+  (ccl:with-cstrs ((name x))
+    (let ((value (_getenv name)))
+      (unless (ccl:%null-ptr-p value)
+	(ccl:%get-cstring value)))))
+
 (defun* getenv (x)
   (#+(or abcl clisp) ext:getenv
    #+allegro sys:getenv
@@ -567,6 +578,7 @@ pathnames."
    #+gcl system:getenv
    #+lispworks lispworks:environment-variable
    #+sbcl sb-ext:posix-getenv
+   #+mcl %getenv
    x))
 
 (defun* directory-pathname-p (pathname)
