diff options
author | Mark Johnston <markj@FreeBSD.org> | 2020-02-03 18:23:50 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2020-02-03 18:23:50 +0000 |
commit | a83c682b36e0e7b014edbbccca11bdb1eb562ce9 (patch) | |
tree | 4132d2b0d5fe0f92c96a81ddd2699d85af1188e2 /sys/conf | |
parent | 920de6a15fa722a442714e8e02c06aa3f09aa030 (diff) | |
download | src-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.arm64 | 1 |
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 |