diff --git a/www/chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c b/www/chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c new file mode 100644 index 000000000000..2ae4f09adbee --- /dev/null +++ b/www/chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c @@ -0,0 +1,49 @@ +--- third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c.orig 2026-02-19 10:23:43 UTC ++++ third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c +@@ -127,9 +127,45 @@ static int arm_get_cpu_caps(void) { + return flags; + } + +-#elif defined(__linux__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++#elif defined(__OpenBSD__) ++#include ++#include ++#include + ++static int arm_get_cpu_caps(void) { ++ int flags = 0; ++ int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; ++ uint64_t cpu_id = 0; ++ size_t len = sizeof(cpu_id); ++ ++ flags |= HAS_NEON; // Neon is mandatory in Armv8.0-A. ++ ++ if (sysctl(isar0_mib, 2, &cpu_id, &len, NULL, 0) < 0) ++ return flags; ++ ++ if (ID_AA64ISAR0_CRC32(cpu_id) >= ID_AA64ISAR0_CRC32_BASE) ++ flags |= HAS_ARM_CRC32; ++ ++ return flags; ++} ++ ++#elif defined(__linux__) || defined(__FreeBSD__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++ + #include ++ ++#if defined(__FreeBSD__) ++static unsigned long getauxval(unsigned long type) ++{ ++ /* Only AT_HWCAP* return unsigned long */ ++ if (type != AT_HWCAP && type != AT_HWCAP2) { ++ return 0; ++ } ++ ++ unsigned long ret = 0; ++ elf_aux_info(type, &ret, sizeof(ret)); ++ return ret; ++} ++#endif + + // Define hwcap values ourselves: building with an old auxv header where these + // hwcap values are not defined should not prevent features from being enabled. diff --git a/www/iridium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c b/www/iridium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c new file mode 100644 index 000000000000..2ae4f09adbee --- /dev/null +++ b/www/iridium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c @@ -0,0 +1,49 @@ +--- third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c.orig 2026-02-19 10:23:43 UTC ++++ third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c +@@ -127,9 +127,45 @@ static int arm_get_cpu_caps(void) { + return flags; + } + +-#elif defined(__linux__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++#elif defined(__OpenBSD__) ++#include ++#include ++#include + ++static int arm_get_cpu_caps(void) { ++ int flags = 0; ++ int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; ++ uint64_t cpu_id = 0; ++ size_t len = sizeof(cpu_id); ++ ++ flags |= HAS_NEON; // Neon is mandatory in Armv8.0-A. ++ ++ if (sysctl(isar0_mib, 2, &cpu_id, &len, NULL, 0) < 0) ++ return flags; ++ ++ if (ID_AA64ISAR0_CRC32(cpu_id) >= ID_AA64ISAR0_CRC32_BASE) ++ flags |= HAS_ARM_CRC32; ++ ++ return flags; ++} ++ ++#elif defined(__linux__) || defined(__FreeBSD__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++ + #include ++ ++#if defined(__FreeBSD__) ++static unsigned long getauxval(unsigned long type) ++{ ++ /* Only AT_HWCAP* return unsigned long */ ++ if (type != AT_HWCAP && type != AT_HWCAP2) { ++ return 0; ++ } ++ ++ unsigned long ret = 0; ++ elf_aux_info(type, &ret, sizeof(ret)); ++ return ret; ++} ++#endif + + // Define hwcap values ourselves: building with an old auxv header where these + // hwcap values are not defined should not prevent features from being enabled. diff --git a/www/ungoogled-chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c b/www/ungoogled-chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c new file mode 100644 index 000000000000..2ae4f09adbee --- /dev/null +++ b/www/ungoogled-chromium/files/patch-third__party_libaom_source_libaom_aom__ports_aarch64__cpudetect.c @@ -0,0 +1,49 @@ +--- third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c.orig 2026-02-19 10:23:43 UTC ++++ third_party/libaom/source/libaom/aom_ports/aarch64_cpudetect.c +@@ -127,9 +127,45 @@ static int arm_get_cpu_caps(void) { + return flags; + } + +-#elif defined(__linux__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++#elif defined(__OpenBSD__) ++#include ++#include ++#include + ++static int arm_get_cpu_caps(void) { ++ int flags = 0; ++ int isar0_mib[] = { CTL_MACHDEP, CPU_ID_AA64ISAR0 }; ++ uint64_t cpu_id = 0; ++ size_t len = sizeof(cpu_id); ++ ++ flags |= HAS_NEON; // Neon is mandatory in Armv8.0-A. ++ ++ if (sysctl(isar0_mib, 2, &cpu_id, &len, NULL, 0) < 0) ++ return flags; ++ ++ if (ID_AA64ISAR0_CRC32(cpu_id) >= ID_AA64ISAR0_CRC32_BASE) ++ flags |= HAS_ARM_CRC32; ++ ++ return flags; ++} ++ ++#elif defined(__linux__) || defined(__FreeBSD__) // end defined(AOM_USE_ANDROID_CPU_FEATURES) ++ + #include ++ ++#if defined(__FreeBSD__) ++static unsigned long getauxval(unsigned long type) ++{ ++ /* Only AT_HWCAP* return unsigned long */ ++ if (type != AT_HWCAP && type != AT_HWCAP2) { ++ return 0; ++ } ++ ++ unsigned long ret = 0; ++ elf_aux_info(type, &ret, sizeof(ret)); ++ return ret; ++} ++#endif + + // Define hwcap values ourselves: building with an old auxv header where these + // hwcap values are not defined should not prevent features from being enabled.