diff options
Diffstat (limited to 'devel/electron38/files/patch-third__party_unrar_src_crc.cpp')
-rw-r--r-- | devel/electron38/files/patch-third__party_unrar_src_crc.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/devel/electron38/files/patch-third__party_unrar_src_crc.cpp b/devel/electron38/files/patch-third__party_unrar_src_crc.cpp new file mode 100644 index 000000000000..ba777a00bd08 --- /dev/null +++ b/devel/electron38/files/patch-third__party_unrar_src_crc.cpp @@ -0,0 +1,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 |