@@ -409,22 +409,29 @@ esac
409409AC_DEFINE_UNQUOTED ( [ HAVE_CPU_SPINWAIT] , [ $HAVE_CPU_SPINWAIT] )
410410AC_DEFINE_UNQUOTED ( [ CPU_SPINWAIT] , [ $CPU_SPINWAIT] )
411411
412+ AC_ARG_WITH ( [ lg_vaddr] ,
413+ [ AS_HELP_STRING ( [ --with-lg-vaddr=<lg-vaddr>] , [ Number of significant virtual address bits] ) ] ,
414+ [ LG_VADDR="$with_lg_vaddr"] , [ LG_VADDR="detect"] )
415+
412416case "${host_cpu}" in
413417 aarch64)
414- AC_MSG_CHECKING ( [ number of significant virtual address bits] )
415- if test "x${ac_cv_sizeof_void_p}" = "x4" ; then
416- # aarch64 ILP32
417- LG_VADDR=32
418- else
419- # aarch64 LP64
420- LG_VADDR=48
418+ if test "x$LG_VADDR" = "xdetect"; then
419+ AC_MSG_CHECKING ( [ number of significant virtual address bits] )
420+ if test "x${LG_SIZEOF_PTR}" = "x2" ; then
421+ # aarch64 ILP32
422+ LG_VADDR=32
423+ else
424+ # aarch64 LP64
425+ LG_VADDR=48
426+ fi
427+ AC_MSG_RESULT ( [ $LG_VADDR] )
421428 fi
422- AC_MSG_RESULT ( [ $LG_VADDR] )
423429 ;;
424430 x86_64)
425- AC_CACHE_CHECK ( [ number of significant virtual address bits] ,
426- [ je_cv_lg_vaddr] ,
427- AC_RUN_IFELSE ( [ AC_LANG_PROGRAM (
431+ if test "x$LG_VADDR" = "xdetect"; then
432+ AC_CACHE_CHECK ( [ number of significant virtual address bits] ,
433+ [ je_cv_lg_vaddr] ,
434+ AC_RUN_IFELSE ( [ AC_LANG_PROGRAM (
428435[ [
429436#include <stdio.h>
430437#ifdef _WIN32
@@ -461,27 +468,30 @@ typedef unsigned __int32 uint32_t;
461468 [ je_cv_lg_vaddr=`cat conftest.out`] ,
462469 [ je_cv_lg_vaddr=error] ,
463470 [ je_cv_lg_vaddr=57] ) )
464- if test "x${je_cv_lg_vaddr}" != "x" ; then
465- LG_VADDR="${je_cv_lg_vaddr}"
466- fi
467- if test "x${LG_VADDR}" != "xerror" ; then
468- AC_DEFINE_UNQUOTED ( [ LG_VADDR] , [ $LG_VADDR] )
469- else
470- AC_MSG_ERROR ( [ cannot determine number of significant virtual address bits] )
471+ if test "x${je_cv_lg_vaddr}" != "x" ; then
472+ LG_VADDR="${je_cv_lg_vaddr}"
473+ fi
474+ if test "x${LG_VADDR}" != "xerror" ; then
475+ AC_DEFINE_UNQUOTED ( [ LG_VADDR] , [ $LG_VADDR] )
476+ else
477+ AC_MSG_ERROR ( [ cannot determine number of significant virtual address bits] )
478+ fi
471479 fi
472480 ;;
473481 *)
474- AC_MSG_CHECKING ( [ number of significant virtual address bits] )
475- if test "x${LG_SIZEOF_PTR}" = "x3" ; then
476- LG_VADDR=64
477- elif test "x${LG_SIZEOF_PTR}" = "x2" ; then
478- LG_VADDR=32
479- elif test "x${LG_SIZEOF_PTR}" = "xLG_SIZEOF_PTR_WIN" ; then
480- LG_VADDR="(1U << (LG_SIZEOF_PTR_WIN+3))"
481- else
482- AC_MSG_ERROR ( [ Unsupported lg(pointer size): ${LG_SIZEOF_PTR}] )
482+ if test "x$LG_VADDR" = "xdetect"; then
483+ AC_MSG_CHECKING ( [ number of significant virtual address bits] )
484+ if test "x${LG_SIZEOF_PTR}" = "x3" ; then
485+ LG_VADDR=64
486+ elif test "x${LG_SIZEOF_PTR}" = "x2" ; then
487+ LG_VADDR=32
488+ elif test "x${LG_SIZEOF_PTR}" = "xLG_SIZEOF_PTR_WIN" ; then
489+ LG_VADDR="(1U << (LG_SIZEOF_PTR_WIN+3))"
490+ else
491+ AC_MSG_ERROR ( [ Unsupported lg(pointer size): ${LG_SIZEOF_PTR}] )
492+ fi
493+ AC_MSG_RESULT ( [ $LG_VADDR] )
483494 fi
484- AC_MSG_RESULT ( [ $LG_VADDR] )
485495 ;;
486496esac
487497AC_DEFINE_UNQUOTED ( [ LG_VADDR] , [ $LG_VADDR] )
0 commit comments