mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
arm: just use the compiler's default yield support
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
||||
5234. [port] arm: just use the compiler's default support for
|
||||
yield. [GL #981]
|
||||
|
||||
--- 9.15.0 released ---
|
||||
|
||||
5233. [bug] Negative trust anchors did not work with "forward only;"
|
||||
|
29
PLATFORMS.md
29
PLATFORMS.md
@@ -72,35 +72,6 @@ These are platforms on which BIND 9.15 is known *not* to build or run:
|
||||
|
||||
## Platform quirks
|
||||
|
||||
### ARM
|
||||
|
||||
If the compilation ends with following error:
|
||||
|
||||
```
|
||||
Error: selected processor does not support `yield' in ARM mode
|
||||
```
|
||||
|
||||
You will need to set `-march` compiler option to `native`, so the compiler
|
||||
recognizes `yield` assembler instruction. The proper way to set `-march=native`
|
||||
would be to put it into `CFLAGS`, e.g. run `./configure` like this:
|
||||
`CFLAGS="-march=native -Os -g" ./configure` plus your usual options.
|
||||
|
||||
If that doesn't work, you can enforce the minimum CPU and FPU (taken from Debian
|
||||
armhf documentation):
|
||||
|
||||
* The lowest worthwhile CPU implementation is Armv7-A, therefore the recommended
|
||||
build option is `-march=armv7-a`.
|
||||
|
||||
* FPU should be set at VFPv3-D16 as they represent the minimum specification of
|
||||
the processors to support here, therefore the recommended build option is
|
||||
`-mfpu=vfpv3-d16`.
|
||||
|
||||
The `configure` command should look like this:
|
||||
|
||||
```
|
||||
CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -Os -g" ./configure
|
||||
```
|
||||
|
||||
### NetBSD 6 i386
|
||||
|
||||
The i386 build of NetBSD requires the `libatomic` library, available from
|
||||
|
@@ -45,6 +45,9 @@
|
||||
/* Define to 1 if you have the `arc4random_uniform' function. */
|
||||
#undef HAVE_ARC4RANDOM_UNIFORM
|
||||
|
||||
/* define if the ARM yield instruction is available */
|
||||
#undef HAVE_ARM_YIELD
|
||||
|
||||
/* Define to 1 if the compiler supports __builtin_clz. */
|
||||
#undef HAVE_BUILTIN_CLZ
|
||||
|
||||
|
12
configure
vendored
12
configure
vendored
@@ -13831,17 +13831,15 @@ $as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
|
||||
#
|
||||
case $host in #(
|
||||
arm*) :
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for yield instruction support" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for yield instruction support" >&5
|
||||
$as_echo_n "checking for yield instruction support... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
__asm__ __volatile__ ("yield")
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
@@ -13849,8 +13847,12 @@ _ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
$as_echo "#define HAVE_ARM_YIELD 1" >>confdefs.h
|
||||
|
||||
else
|
||||
as_fn_error $? "no, try adding -march=native or -march=armv7-a to CFLAGS (see PLATFORMS.md for more information)" "$LINENO" 5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #(
|
||||
*) :
|
||||
|
18
configure.ac
18
configure.ac
@@ -424,15 +424,15 @@ AC_C_FLEXIBLE_ARRAY_MEMBER
|
||||
# Check for yield support on ARM processors
|
||||
#
|
||||
AS_CASE([$host],
|
||||
[arm*],[
|
||||
AC_MSG_CHECKING([for yield instruction support])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[]],
|
||||
[[__asm__ __volatile__ ("yield")]]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_ERROR([no, try adding -march=native or -march=armv7-a to CFLAGS (see PLATFORMS.md for more information)])])])
|
||||
[arm*],
|
||||
[AC_MSG_CHECKING([for yield instruction support])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]],
|
||||
[[__asm__ __volatile__ ("yield")]])],
|
||||
[AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAVE_ARM_YIELD], [1],
|
||||
[define if the ARM yield instruction is available])],
|
||||
[AC_MSG_RESULT([no])])])
|
||||
|
||||
AC_CHECK_FUNCS([sysctlbyname])
|
||||
|
||||
|
@@ -52,7 +52,7 @@
|
||||
# define isc_rwlock_pause() __asm__ __volatile__ ("rep; nop")
|
||||
#elif defined(__ia64__)
|
||||
# define isc_rwlock_pause() __asm__ __volatile__ ("hint @pause")
|
||||
#elif defined(__arm__)
|
||||
#elif defined(__arm__) && HAVE_ARM_YIELD
|
||||
# define isc_rwlock_pause() __asm__ __volatile__ ("yield")
|
||||
#elif defined(sun) && (defined(__sparc) || defined(__sparc__))
|
||||
# define isc_rwlock_pause() smt_pause()
|
||||
|
Reference in New Issue
Block a user