aboutsummaryrefslogtreecommitdiff
path: root/sys/libkern/gsb_crc32.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/libkern/gsb_crc32.c')
-rw-r--r--sys/libkern/gsb_crc32.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/sys/libkern/gsb_crc32.c b/sys/libkern/gsb_crc32.c
index 81583567ce84..b2f7421c20eb 100644
--- a/sys/libkern/gsb_crc32.c
+++ b/sys/libkern/gsb_crc32.c
@@ -58,7 +58,8 @@ __FBSDID("$FreeBSD$");
#endif
#if defined(__aarch64__)
-#include <machine/cpu.h>
+#include <machine/elf.h>
+#include <machine/md_var.h>
#endif
#endif /* _KERNEL */
@@ -755,14 +756,7 @@ calculate_crc32c(uint32_t crc32c,
} else
#endif
#if defined(__aarch64__)
- uint64_t reg;
-
- /*
- * We only test for CRC32 support on the CPU with index 0 assuming that
- * this applies to all CPUs.
- */
- reg = READ_SPECIALREG(id_aa64isar0_el1);
- if (ID_AA64ISAR0_CRC32_VAL(reg) != ID_AA64ISAR0_CRC32_NONE) {
+ if ((elf_hwcap & HWCAP_CRC32) != 0) {
return (armv8_crc32c(crc32c, buffer, length));
} else
#endif