Lines 1-17
Link Here
|
1 |
--- third_party/zlib/arm_features.c.orig 2019-06-04 18:55:48 UTC |
1 |
--- third_party/zlib/arm_features.c.orig 2019-06-04 18:55:48 UTC |
2 |
+++ third_party/zlib/arm_features.c |
2 |
+++ third_party/zlib/arm_features.c |
3 |
@@ -16,6 +16,10 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; |
3 |
@@ -16,6 +16,17 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; |
4 |
#include <pthread.h> |
4 |
#include <pthread.h> |
5 |
#endif |
5 |
#endif |
6 |
|
6 |
|
7 |
+#if defined(__FreeBSD__) |
7 |
+#if defined(__FreeBSD__) |
|
|
8 |
+#include <stdint.h> |
8 |
+#include <machine/armreg.h> |
9 |
+#include <machine/armreg.h> |
9 |
+#include <sys/types.h> |
10 |
+#include <sys/types.h> |
|
|
11 |
+#ifndef ID_AA64ISAR0_AES_VAL |
12 |
+#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES |
13 |
+#endif |
14 |
+#ifndef ID_AA64ISAR0_CRC32_VAL |
15 |
+#define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32 |
16 |
+#endif |
10 |
+#else |
17 |
+#else |
11 |
#if defined(ARMV8_OS_ANDROID) |
18 |
#if defined(ARMV8_OS_ANDROID) |
12 |
#include <cpu-features.h> |
19 |
#include <cpu-features.h> |
13 |
#elif defined(ARMV8_OS_LINUX) |
20 |
#elif defined(ARMV8_OS_LINUX) |
14 |
@@ -30,6 +34,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; |
21 |
@@ -30,6 +41,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; |
15 |
#else |
22 |
#else |
16 |
#error arm_features.c ARM feature detection in not defined for your platform |
23 |
#error arm_features.c ARM feature detection in not defined for your platform |
17 |
#endif |
24 |
#endif |
Lines 19-33
Link Here
|
19 |
|
26 |
|
20 |
static void _arm_check_features(void); |
27 |
static void _arm_check_features(void); |
21 |
|
28 |
|
22 |
@@ -68,14 +73,24 @@ static void _arm_check_features(void) |
29 |
@@ -68,14 +80,24 @@ static void _arm_check_features(void) |
23 |
arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); |
30 |
arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); |
24 |
arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); |
31 |
arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); |
25 |
#elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) |
32 |
#elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) |
26 |
+#if defined(__FreeBSD__) |
33 |
+#if defined(__FreeBSD__) |
27 |
+ uint64_t id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); |
34 |
+ uint64_t id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); |
28 |
+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) |
35 |
+ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) |
29 |
+ arm_cpu_enable_pmull = 1; |
36 |
+ arm_cpu_enable_pmull = 1; |
30 |
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) |
37 |
+ if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) |
31 |
+ arm_cpu_enable_crc32 = 1; |
38 |
+ arm_cpu_enable_crc32 = 1; |
32 |
+#else |
39 |
+#else |
33 |
unsigned long features = getauxval(AT_HWCAP); |
40 |
unsigned long features = getauxval(AT_HWCAP); |