Author: mhorne
Date: Tue Sep  8 15:39:19 2020
New Revision: 365461
URL: https://svnweb.freebsd.org/changeset/base/365461

Log:
  arm64: check for CRC32 support via HWCAP
  
  Doing it this way eliminates the assumption about homogeneous support
  for the feature, since HWCAP values are only set if support is present
  on all CPUs.
  
  Reviewed by:  tuexen, markj
  MFC after:    1 week
  Sponsored by: The FreeBSD Foundation
  Differential Revision:        https://reviews.freebsd.org/D26032

Modified:
  head/sys/libkern/gsb_crc32.c

Modified: head/sys/libkern/gsb_crc32.c
==============================================================================
--- head/sys/libkern/gsb_crc32.c        Tue Sep  8 15:36:38 2020        
(r365460)
+++ head/sys/libkern/gsb_crc32.c        Tue Sep  8 15:39:19 2020        
(r365461)
@@ -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
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to