diff --git a/lisp/Linux-os.c b/lisp/Linux-os.c
index f56f47a764fe996dc895d7cec6acaa04b044597f..8c4ec3865914ec0841799255f41e6563f75e3f18 100644
--- a/lisp/Linux-os.c
+++ b/lisp/Linux-os.c
@@ -15,7 +15,7 @@
  * GENCGC support by Douglas Crosher, 1996, 1997.
  * Alpha support by Julian Dolby, 1999.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.9 1999/11/29 17:04:07 dtc Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.10 2000/01/19 18:15:15 dtc Exp $
  *
  */
 
@@ -118,27 +118,9 @@ void os_set_context(void)
 {
 }
 
-int do_mmap(os_vm_address_t *addr, os_vm_size_t len, int flags)
-{
-  /* We _must_ have the memory where we want it... */
-  os_vm_address_t old_addr = *addr;
-
-  *addr = mmap(*addr, len, OS_VM_PROT_ALL, flags, -1, 0);
-  if ((old_addr != NULL && *addr != old_addr) || 
-      *addr == (os_vm_address_t) -1)
-    {
-      fprintf(stderr, "Error in allocating memory, do you have more then 16MB of memory+swap?\n");
-      perror("mmap");
-      return 1;
-    }
- return 0;
-}
-
 os_vm_address_t os_validate(os_vm_address_t addr, os_vm_size_t len)
 {
-  int flags = MAP_PRIVATE | MAP_ANONYMOUS;
-  os_vm_address_t oa = addr;
-  os_vm_size_t olen = len;
+  int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE;
 
   if (addr)
     flags |= MAP_FIXED;
@@ -146,33 +128,18 @@ os_vm_address_t os_validate(os_vm_address_t addr, os_vm_size_t len)
     flags |= MAP_VARIABLE;
 
   DPRINTF(0, (stderr, "os_validate %x %d => ", addr, len));
-  if (addr)
-    {
-      do {
-	if (len <= 0x1000000 )
-	  {
-	    if (do_mmap(&addr, len, flags))
-	      return NULL;
-	    len = 0;
-	  }
-	else
-	  {
-	    len = len - 0x1000000;
-	    if (do_mmap(&addr, 0x1000000, flags))
-		return NULL;
-	    addr += 0x1000000;
-	  }
-      }
-      while (len > 0);
-    }
-  else
+
+  addr = mmap(addr, len, OS_VM_PROT_ALL, flags, -1, 0);
+
+  if(addr == (os_vm_address_t) -1)
     {
-      if (do_mmap(&addr, len, flags))
-	  return NULL;
-      return addr;
+      perror("mmap");
+      return NULL;
     }
+
   DPRINTF(0, (stderr, "%x\n", addr));
-  return oa;
+
+  return addr;
 }
 
 void os_invalidate(os_vm_address_t addr, os_vm_size_t len)