diff --git a/src/lisp/gencgc.c b/src/lisp/gencgc.c
index c2aa983bede7bd4426487f36a7f835cc41e4bcde..fc1f7dd168fe7813995e6e5b5577e617006dac2d 100644
--- a/src/lisp/gencgc.c
+++ b/src/lisp/gencgc.c
@@ -6987,8 +6987,15 @@ free_oldspace(void)
               if (gencgc_debug_madvise) {
                   fprintf(stderr, "ADVISING pages %d-%d\n", first_page, last_page - 1);
               }
-#if 1
-              madvise(page_start, GC_PAGE_SIZE * (last_page - first_page), MADV_ZERO_WIRED_PAGES);
+
+#if defined(__linux__)
+#define GENCGC_MADVISE	MADV_DONTNEED
+#else
+#define GENCGC_MADVISE	MADV_FREE              
+#endif
+
+#if 1 || !defined(__linux__)
+              madvise(page_start, GC_PAGE_SIZE * (last_page - first_page), GENCGC_MADVISE);
 #else
               page_start = (int *) page_address(first_page);
               memset(page_start, 0, GC_PAGE_SIZE * (last_page - first_page));