2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 23:15:18 +00:00

arm: just use the compiler's default yield support

This commit is contained in:
Mark Andrews
2019-05-06 18:06:59 +10:00
parent 9150e432aa
commit f546769b8b
6 changed files with 23 additions and 44 deletions

View File

@@ -1,3 +1,6 @@
5234. [port] arm: just use the compiler's default support for
yield. [GL #981]
--- 9.15.0 released --- --- 9.15.0 released ---
5233. [bug] Negative trust anchors did not work with "forward only;" 5233. [bug] Negative trust anchors did not work with "forward only;"

View File

@@ -72,35 +72,6 @@ These are platforms on which BIND 9.15 is known *not* to build or run:
## Platform quirks ## 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 ### NetBSD 6 i386
The i386 build of NetBSD requires the `libatomic` library, available from The i386 build of NetBSD requires the `libatomic` library, available from

View File

@@ -45,6 +45,9 @@
/* Define to 1 if you have the `arc4random_uniform' function. */ /* Define to 1 if you have the `arc4random_uniform' function. */
#undef HAVE_ARC4RANDOM_UNIFORM #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. */ /* Define to 1 if the compiler supports __builtin_clz. */
#undef HAVE_BUILTIN_CLZ #undef HAVE_BUILTIN_CLZ

8
configure vendored
View File

@@ -13831,7 +13831,6 @@ $as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
# #
case $host in #( case $host in #(
arm*) : 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; } $as_echo_n "checking for yield instruction support... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13841,7 +13840,6 @@ int
main () main ()
{ {
__asm__ __volatile__ ("yield") __asm__ __volatile__ ("yield")
; ;
return 0; return 0;
} }
@@ -13849,8 +13847,12 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then : if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; } $as_echo "yes" >&6; }
$as_echo "#define HAVE_ARM_YIELD 1" >>confdefs.h
else 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 fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #( rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #(
*) : *) :

View File

@@ -424,15 +424,15 @@ AC_C_FLEXIBLE_ARRAY_MEMBER
# Check for yield support on ARM processors # Check for yield support on ARM processors
# #
AS_CASE([$host], AS_CASE([$host],
[arm*],[ [arm*],
AC_MSG_CHECKING([for yield instruction support]) [AC_MSG_CHECKING([for yield instruction support])
AC_COMPILE_IFELSE( AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM( [AC_LANG_PROGRAM([[]],
[[]], [[__asm__ __volatile__ ("yield")]])],
[[__asm__ __volatile__ ("yield")]] [AC_MSG_RESULT([yes])
)], AC_DEFINE([HAVE_ARM_YIELD], [1],
[AC_MSG_RESULT([yes])], [define if the ARM yield instruction is available])],
[AC_MSG_ERROR([no, try adding -march=native or -march=armv7-a to CFLAGS (see PLATFORMS.md for more information)])])]) [AC_MSG_RESULT([no])])])
AC_CHECK_FUNCS([sysctlbyname]) AC_CHECK_FUNCS([sysctlbyname])

View File

@@ -52,7 +52,7 @@
# define isc_rwlock_pause() __asm__ __volatile__ ("rep; nop") # define isc_rwlock_pause() __asm__ __volatile__ ("rep; nop")
#elif defined(__ia64__) #elif defined(__ia64__)
# define isc_rwlock_pause() __asm__ __volatile__ ("hint @pause") # define isc_rwlock_pause() __asm__ __volatile__ ("hint @pause")
#elif defined(__arm__) #elif defined(__arm__) && HAVE_ARM_YIELD
# define isc_rwlock_pause() __asm__ __volatile__ ("yield") # define isc_rwlock_pause() __asm__ __volatile__ ("yield")
#elif defined(sun) && (defined(__sparc) || defined(__sparc__)) #elif defined(sun) && (defined(__sparc) || defined(__sparc__))
# define isc_rwlock_pause() smt_pause() # define isc_rwlock_pause() smt_pause()