Index: configure.ac
===================================================================
RCS file: /var/local/cvs/lbnl_cr/configure.ac,v
retrieving revision 1.364.2.7
diff -u -r1.364.2.7 configure.ac
--- configure.ac	12 Aug 2008 20:10:54 -0000	1.364.2.7
+++ configure.ac	5 Sep 2008 01:13:41 -0000
@@ -1056,12 +1056,22 @@
   fi
 fi
 
-# XXX: This is the correct symbol to import for most architectures' ZERO_PAGE().
-# However it is not right for ia64, sparc64 or mips.  If we support these
-# in the future we'll need 'case $CR_ARCH' to probe the right symbol(s)
-CR_FIND_KSYM([empty_zero_page],[DATA]) # Must have a prototype in asm/pgtable.h (arch-specific)
+# Import the correct symbol for arch-specific ZERO_PAGE(),
+# which must have a prototype in asm/pgtable.h (arch-specific)
+# If we support ia64 or mips in the future we'll need to add more cases here.
+# NOTE: don't try to factor the CR_FIND_KSYM() call; it requires a literal.
+case $CR_ARCH in
+  sparc*)
+    CR_FIND_KSYM([mem_map_zero],[DATA])
+    ZERO_PAGE_SYMBOL=mem_map_zero
+    ;;
+  *)
+    CR_FIND_KSYM([empty_zero_page],[DATA])
+    ZERO_PAGE_SYMBOL=empty_zero_page
+    ;;
+esac
 if test -z "$cr_addr"; then
-  AC_MSG_ERROR([failed to find symbol empty_zero_page])
+  AC_MSG_ERROR([failed to find symbol $ZERO_PAGE_SYMBOL])
 fi
 
 CR_CHECK_KERNEL_CALL_NARGS([permission],[#include <linux/fs.h>],[NULL,0],[NULL,0,NULL])

