mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-27 04:41:02 +08:00
5a414ff70c
Added support for TX lock elision of pthread mutexes on s390 and s390x. This may improve lock scaling of existing programs on TX capable systems. The lock elision code is only built with --enable-lock-elision=yes and then requires a GCC version supporting the TX builtins. With lock elision default mutexes are elided via __builtin_tbegin, if the cpu supports transactions. By default lock elision is not enabled and the elision code is not built.
41 lines
1.3 KiB
Plaintext
41 lines
1.3 KiB
Plaintext
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
|
# Local configure fragment for sysdeps/s390.
|
|
|
|
dnl It is always possible to access static and hidden symbols in an
|
|
dnl position independent way.
|
|
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
|
|
|
dnl Accept as 2.24 or newer.
|
|
AC_CHECK_PROG_VER(AS, $AS, --version,
|
|
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
|
|
[2.2[4-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing The program AS is required in version >= 2.24 for target S390.")
|
|
|
|
|
|
AC_CACHE_CHECK(for __builtin_tbegin, libc_cv_gcc_builtin_tbegin, [dnl
|
|
cat > conftest.c <<\EOF
|
|
#include <htmintrin.h>
|
|
void testtransaction ()
|
|
{
|
|
if (__builtin_tbegin (0) == _HTM_TBEGIN_STARTED)
|
|
{
|
|
__builtin_tend ();
|
|
}
|
|
}
|
|
EOF
|
|
dnl
|
|
dnl test, if the tbegin instruction is used by __builtin_tbegin
|
|
if AC_TRY_COMMAND([${CC-cc} -mhtm -O2 -S conftest.c -o - | grep -w tbegin > /dev/null]) ;
|
|
then
|
|
libc_cv_gcc_builtin_tbegin=yes
|
|
else
|
|
libc_cv_gcc_builtin_tbegin=no
|
|
fi
|
|
rm -f conftest* ])
|
|
|
|
if test "$enable_lock_elision" = yes && test "$libc_cv_gcc_builtin_tbegin" = no ; then
|
|
critic_missing="$critic_missing The used GCC has no support for __builtin_tbegin, which is needed for lock-elision on target S390."
|
|
fi
|
|
|
|
test -n "$critic_missing" && AC_MSG_ERROR([
|
|
*** $critic_missing])
|