diff --git a/configure.ac b/configure.ac
index 849b2bc879a0e986a93d2121b90f03c51bb510a2..75cff5bf20115af2a18de23525bf90f66282a5b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -168,7 +168,30 @@ else
 fi
 AC_SUBST([CCPIC_MAYBE])
 
-LSH_MAKE_CONDITIONAL([ENABLE_ASM], [test x$enable_assembler = xyes])
+ASM_SYMBOL_PREFIX=''
+
+if test x$enable_assembler = xyes ; then
+  AC_CACHE_CHECK([if globals are prefixed by underscore],
+  nettle_cv_asm_underscore,
+  [ # Default is no underscore
+    nettle_cv_asm_underscore=no
+    AC_COMPILE_IFELSE(
+      [int a_global_symbol;],
+      [ nm conftest.$OBJEXT >conftest.out
+        if grep _a_global_symbol conftest.out >/dev/null ; then
+          nettle_cv_asm_underscore=yes
+        elif grep a_global_symbol conftest.out >/dev/null ; then
+          nettle_cv_asm_underscore=no
+        else
+          AC_MSG_WARN([nm doesn't list a_global_symbol at all])
+	fi],
+      [AC_MSG_WARN([test program with a single global could not be compiled!?])])])
+  if x$nettle_cv_asm_underscore=xyes ; then
+    ASM_SYMBOL_PREFIX='_'
+  fi 
+fi
+
+AC_SUBST(ASM_SYMBOL_PREFIX)
 
 AC_SUBST(SHLIBCFLAGS)
 AC_SUBST(SHLIBMAJOR)