diff options
| author | Greg V <greg@unrelenting.technology> | 2020-11-14 14:29:17 +0300 |
|---|---|---|
| committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2020-11-21 16:45:10 +0100 |
| commit | ed88b15de28855f0506959b4ec0a38713844d756 (patch) | |
| tree | 9630055201e6abcd2521631b82a5dc17ea62455d | |
| parent | dbf55b1a83cbfd0f6a4e1748ada416bff8465668 (diff) | |
| download | Project-Tick-ed88b15de28855f0506959b4ec0a38713844d756.tar.gz Project-Tick-ed88b15de28855f0506959b4ec0a38713844d756.zip | |
Add AArch64 feature detection support for FreeBSD
| -rw-r--r-- | arch/arm/armfeature.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/armfeature.c b/arch/arm/armfeature.c index 27e06b8d54..f3764fd1db 100644 --- a/arch/arm/armfeature.c +++ b/arch/arm/armfeature.c @@ -3,6 +3,11 @@ #if defined(__linux__) # include <sys/auxv.h> # include <asm/hwcap.h> +#elif defined(__FreeBSD__) && defined(__aarch64__) +# include <machine/armreg.h> +# ifndef ID_AA64ISAR0_CRC32_VAL +# define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32 +# endif #elif defined(_WIN32) # include <winapifamily.h> #endif @@ -10,6 +15,9 @@ static int arm_has_crc32() { #if defined(__linux__) && defined(HWCAP2_CRC32) return (getauxval(AT_HWCAP2) & HWCAP2_CRC32) != 0 ? 1 : 0; +#elif defined(__FreeBSD__) && defined(__aarch64__) + return getenv("QEMU_EMULATING") == NULL + && ID_AA64ISAR0_CRC32_VAL(READ_SPECIALREG(id_aa64isar0_el1)) >= ID_AA64ISAR0_CRC32_BASE; #elif defined(ARM_NOCHECK_ACLE) return 1; #else |
