lang/v8: Fix build on aarch64
Approved by: portmgr (tier-2 blanket)
This commit is contained in:
parent
69d36a91ee
commit
fa2f8a2d1f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=559002
2 changed files with 59 additions and 0 deletions
11
lang/v8/files/patch-third__party_zlib_BUILD.gn
Normal file
11
lang/v8/files/patch-third__party_zlib_BUILD.gn
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- third_party/zlib/BUILD.gn.orig 2020-11-16 14:31:04 UTC
|
||||
+++ third_party/zlib/BUILD.gn
|
||||
@@ -108,6 +108,8 @@ if (use_arm_neon_optimizations) {
|
||||
defines = [ "CRC32_ARMV8_CRC32" ]
|
||||
if (is_android) {
|
||||
defines += [ "ARMV8_OS_ANDROID" ]
|
||||
+ } else if (is_bsd) {
|
||||
+ defines += [ "ARMV8_OS_FREEBSD" ]
|
||||
} else if (is_linux || is_chromeos) {
|
||||
defines += [ "ARMV8_OS_LINUX" ]
|
||||
} else if (is_mac) {
|
48
lang/v8/files/patch-third__party_zlib_cpu__features.c
Normal file
48
lang/v8/files/patch-third__party_zlib_cpu__features.c
Normal file
|
@ -0,0 +1,48 @@
|
|||
--- third_party/zlib/cpu_features.c.orig 2020-11-16 14:31:04 UTC
|
||||
+++ third_party/zlib/cpu_features.c
|
||||
@@ -31,11 +31,20 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
|
||||
|
||||
#ifndef CPU_NO_SIMD
|
||||
|
||||
-#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA)
|
||||
+#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(ARMV8_OS_FREEBSD)
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
-#if defined(ARMV8_OS_ANDROID)
|
||||
+#if defined(ARMV8_OS_FREEBSD)
|
||||
+#include <machine/armreg.h>
|
||||
+#include <sys/types.h>
|
||||
+#ifndef ID_AA64ISAR0_AES_VAL
|
||||
+#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES
|
||||
+#endif
|
||||
+#ifndef ID_AA64ISAR0_CRC32_VAL
|
||||
+#define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
|
||||
+#endif
|
||||
+#elif defined(ARMV8_OS_ANDROID)
|
||||
#include <cpu-features.h>
|
||||
#elif defined(ARMV8_OS_LINUX)
|
||||
#include <asm/hwcap.h>
|
||||
@@ -56,7 +65,7 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
|
||||
static void _cpu_check_features(void);
|
||||
#endif
|
||||
|
||||
-#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_MACOS) || defined(ARMV8_OS_FUCHSIA) || defined(X86_NOT_WINDOWS)
|
||||
+#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_MACOS) || defined(ARMV8_OS_FUCHSIA) || defined(X86_NOT_WINDOWS) || defined(ARMV8_OS_FREEBSD)
|
||||
#if !defined(ARMV8_OS_MACOS)
|
||||
// _cpu_check_features() doesn't need to do anything on mac/arm since all
|
||||
// features are known at build time, so don't call it.
|
||||
@@ -123,6 +132,13 @@ static void _cpu_check_features(void)
|
||||
#elif defined(ARMV8_OS_WINDOWS)
|
||||
arm_cpu_enable_crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE);
|
||||
arm_cpu_enable_pmull = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE);
|
||||
+#elif defined(ARMV8_OS_FREEBSD)
|
||||
+ uint64_t id_aa64isar0;
|
||||
+ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
|
||||
+ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
|
||||
+ arm_cpu_enable_pmull = 1;
|
||||
+ if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
|
||||
+ arm_cpu_enable_crc32 = 1;
|
||||
#endif
|
||||
}
|
||||
#endif
|
Loading…
Reference in a new issue