www/firefox: fix build on aarch64

The interface has changed a bit on -current:

In file included from Unified_cpp_gfx_skia1.cpp:137:
/wrkdirs/usr/ports/www/firefox/work/firefox-71.0/gfx/skia/skia/src/core/SkCpu.cpp:81:13: error: use of undeclared identifier 'ID_AA64ISAR0_CRC32'
        if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {

PR:		243653
Reviewed by:	jbeich
Approved by:	jbeich , manu (mentor, implicit)
This commit is contained in:
Mikael Urankar 2020-03-31 15:13:15 +00:00
parent 70e31bb7b2
commit f5c45d042b
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=529979
3 changed files with 21 additions and 12 deletions

View file

@ -4,21 +4,24 @@ gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'get
uint32_t hwcaps = getauxval(AT_HWCAP);
^
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2019-02-27 22:18:23 UTC
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2020-02-10 09:43:20 UTC
+++ gfx/skia/skia/src/core/SkCpu.cpp
@@ -70,6 +70,20 @@
@@ -70,6 +70,23 @@
return features;
}
+#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
+ #include <machine/armreg.h>
+ #ifndef ID_AA64ISAR0_CRC32_VAL
+ #define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
+ #endif
+
+ static uint32_t read_cpu_features() {
+ uint32_t features = 0;
+ uint64_t id_aa64isar0;
+
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
+ if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ features |= SkCpu::CRC32;
+ }
+ return features;

View file

@ -4,21 +4,24 @@ gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'get
uint32_t hwcaps = getauxval(AT_HWCAP);
^
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2019-02-27 22:18:23 UTC
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2020-02-07 01:27:03 UTC
+++ gfx/skia/skia/src/core/SkCpu.cpp
@@ -70,6 +70,20 @@
@@ -70,6 +70,23 @@
return features;
}
+#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
+ #include <machine/armreg.h>
+ #ifndef ID_AA64ISAR0_CRC32_VAL
+ #define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
+ #endif
+
+ static uint32_t read_cpu_features() {
+ uint32_t features = 0;
+ uint64_t id_aa64isar0;
+
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
+ if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ features |= SkCpu::CRC32;
+ }
+ return features;

View file

@ -4,21 +4,24 @@ gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'get
uint32_t hwcaps = getauxval(AT_HWCAP);
^
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2019-02-27 22:18:23 UTC
--- gfx/skia/skia/src/core/SkCpu.cpp.orig 2020-02-07 22:13:22 UTC
+++ gfx/skia/skia/src/core/SkCpu.cpp
@@ -70,6 +70,20 @@
@@ -72,6 +72,23 @@
return features;
}
+#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
+ #include <machine/armreg.h>
+ #ifndef ID_AA64ISAR0_CRC32_VAL
+ #define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
+ #endif
+
+ static uint32_t read_cpu_features() {
+ uint32_t features = 0;
+ uint64_t id_aa64isar0;
+
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
+ if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
+ features |= SkCpu::CRC32;
+ }
+ return features;