diff options
Diffstat (limited to 'mysys/crc32/crc32c.cc')
-rw-r--r-- | mysys/crc32/crc32c.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mysys/crc32/crc32c.cc b/mysys/crc32/crc32c.cc index c0f8c518691..f11a80fb5d8 100644 --- a/mysys/crc32/crc32c.cc +++ b/mysys/crc32/crc32c.cc @@ -476,6 +476,21 @@ static int arch_ppc_probe(void) { return arch_ppc_crc32; } +#elif __FreeBSD_version >= 1200000 +#include <machine/cpu.h> +#include <sys/auxv.h> +#include <sys/elf_common.h> +static int arch_ppc_probe(void) { + unsigned long cpufeatures; + arch_ppc_crc32 = 0; + +#if defined(__powerpc64__) + elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)); + if (cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO) arch_ppc_crc32 = 1; +#endif /* __powerpc64__ */ + + return arch_ppc_crc32; +} #endif // __linux__ static bool isAltiVec() { |