1From 577ae0352d191fa604f861ea2f0847e7c5eda617 Mon Sep 17 00:00:00 2001
2From: Frank Denis <github@pureftpd.org>
3Date: Wed, 1 Jul 2020 22:51:43 +0200
4Subject: [PATCH] Add support for Apple silicon
5
6[Retrieved from:
7https://github.com/angt/aegis256/commit/577ae0352d191fa604f861ea2f0847e7c5eda617]
8Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
9---
10 aegis256.c | 8 +++++++-
11 1 file changed, 7 insertions(+), 1 deletion(-)
12
13diff --git a/mud/aegis256/aegis256.c b/mud/aegis256/aegis256.c
14index 9a580bf..75a772c 100644
15--- a/mud/aegis256/aegis256.c
16+++ b/mud/aegis256/aegis256.c
17@@ -36,7 +36,7 @@ typedef __m128i       x128;
18 #define store128(X,Y) _mm_storeu_si128((x128 *)(X), (Y))
19 #define set2x64(X,Y)  _mm_set_epi64x((long long)(X), (long long)(Y))
20
21-#elif defined(__linux__) && (defined(__ARM_NEON_FP) || defined(__aarch64__))
22+#elif (defined(__APPLE__) || defined(__linux__)) && (defined(__ARM_NEON_FP) || defined(__aarch64__))
23
24 #ifdef __clang__
25 #pragma clang attribute push (__attribute__((target("crypto"))),apply_to=function)
26@@ -48,7 +48,9 @@ typedef __m128i       x128;
27 #endif
28
29 #ifdef __ARM_FEATURE_CRYPTO
30+#ifdef __linux__
31 #include <sys/auxv.h>
32+#endif
33 #include <arm_neon.h>
34
35 typedef uint8x16_t    x128;
36@@ -62,11 +64,15 @@ typedef uint8x16_t    x128;
37 int
38 aegis256_is_available(void)
39 {
40+#ifdef __linux__
41     return (getauxval(AT_HWCAP) & HWCAP_AES)
42 #ifdef HWCAP2_AES
43         || (getauxval(AT_HWCAP2) & HWCAP2_AES)
44 #endif
45         ;
46+#else // __APPLE__
47+    return 1;
48+#endif
49 }
50
51 #endif // __ARM_FEATURE_CRYPTO
52