summaryrefslogtreecommitdiff
path: root/devel/electron37/files/patch-third__party_unrar_src_crc.cpp
blob: ba777a00bd08537365c75cdf3c6167c165808bf0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--- third_party/unrar/src/crc.cpp.orig	2025-02-21 07:45:09 UTC
+++ third_party/unrar/src/crc.cpp
@@ -43,12 +43,18 @@ void InitCRC32(uint *CRCTab)
   }
 
 #ifdef USE_NEON_CRC32
-  #ifdef _APPLE
+  #if defined(_APPLE)
     // getauxval isn't available in OS X
     uint Value=0;
     size_t Size=sizeof(Value);
     int RetCode=sysctlbyname("hw.optional.armv8_crc32",&Value,&Size,NULL,0);
     CRC_Neon=RetCode==0 && Value!=0;
+  #elif defined(__FreeBSD__)
+    // getauxval isn't available on FreeBSD
+    uint64 Reg=READ_SPECIALREG(id_aa64isar0_el1);
+    if (ID_AA64ISAR0_CRC32_VAL(Reg) == ID_AA64ISAR0_CRC32_BASE) {
+      CRC_Neon=true;
+    }
   #else
     CRC_Neon=(getauxval(AT_HWCAP) & HWCAP_CRC32)!=0;
   #endif