aboutsummaryrefslogtreecommitdiff
path: root/sys/conf
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2020-02-03 18:23:50 +0000
committerMark Johnston <markj@FreeBSD.org>2020-02-03 18:23:50 +0000
commita83c682b36e0e7b014edbbccca11bdb1eb562ce9 (patch)
tree4132d2b0d5fe0f92c96a81ddd2699d85af1188e2 /sys/conf
parent920de6a15fa722a442714e8e02c06aa3f09aa030 (diff)
downloadsrc-a83c682b36e0e7b014edbbccca11bdb1eb562ce9.tar.gz
src-a83c682b36e0e7b014edbbccca11bdb1eb562ce9.zip
Dynamically select LSE-based atomic(9)s on arm64.
Once all CPUs are online, determine if they all support LSE atomics and set lse_supported to indicate this. For now the atomic(9) implementations are still always inlined, though it would be preferable to create out-of-line functions to avoid text bloat. This was not done here since big.little systems exist in which some CPUs implement LSE while others do not, and ifunc resolution must occur well before this scenario can be detected. It does seem unlikely that FreeBSD will ever run on such platforms, however, so converting atomic(9) to use ifuncs is probably a good next step. Add a LSE_ATOMICS arm64 kernel configuration option to unconditionally select LSE-based atomic(9) implementations when the target system is known. Reviewed by: andrew, kib MFC after: 1 month Sponsored by: The FreeBSD Foundation, Amazon (hardware) Differential Revision: https://reviews.freebsd.org/D23325
Notes
Notes: svn path=/head/; revision=357460
Diffstat (limited to 'sys/conf')
-rw-r--r--sys/conf/options.arm641
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/conf/options.arm64 b/sys/conf/options.arm64
index 02da846c8ca9..dc2a0c6f98fa 100644
--- a/sys/conf/options.arm64
+++ b/sys/conf/options.arm64
@@ -7,6 +7,7 @@ SOCDEV_VA opt_global.h
THUNDERX_PASS_1_1_ERRATA opt_global.h
VFP opt_global.h
LINUX_BOOT_ABI opt_global.h
+LSE_ATOMICS opt_global.h
# Binary compatibility
COMPAT_FREEBSD32 opt_global.h