From 822b9a6cea8dcdf88b15bd0006c81a069a927bb3 Mon Sep 17 00:00:00 2001 From: Peter Tarjan Date: Thu, 4 Sep 2025 12:28:03 +0200 Subject: [PATCH] Update AArch64 features to Linux 6.12. Change-Id: Ie4e3f6a1e308e81e89f45976e5cba3c0d9bc3039 --- include/cpuinfo_aarch64.h | 2 ++ include/internal/hwcaps.h | 1 + src/impl_aarch64__base_implementation.inl | 4 +++- test/cpuinfo_aarch64_test.cc | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/cpuinfo_aarch64.h b/include/cpuinfo_aarch64.h index 826f0ab..523d598 100644 --- a/include/cpuinfo_aarch64.h +++ b/include/cpuinfo_aarch64.h @@ -217,6 +217,7 @@ typedef struct { // (4-way) instructions. int smesf8dp2 : 1; // SVE2 FP8 to half-precision 2-way dot product FDOT // (2-way) instructions. + int poe : 1; // Stage 1 Permission Overlay. // Make sure to update Aarch64FeaturesEnum below if you add a field here. } Aarch64Features; @@ -331,6 +332,7 @@ typedef enum { AARCH64_SME_SF8FMA, AARCH64_SME_SF8DP4, AARCH64_SME_SF8DP2, + AARCH64_POE, AARCH64_LAST_, } Aarch64FeaturesEnum; diff --git a/include/internal/hwcaps.h b/include/internal/hwcaps.h index 2490e3e..fcc229b 100644 --- a/include/internal/hwcaps.h +++ b/include/internal/hwcaps.h @@ -124,6 +124,7 @@ CPU_FEATURES_START_CPP_NAMESPACE #define AARCH64_HWCAP2_SME_SF8FMA (1UL << 60) #define AARCH64_HWCAP2_SME_SF8DP4 (1UL << 61) #define AARCH64_HWCAP2_SME_SF8DP2 (1UL << 62) +#define AARCH64_HWCAP2_POE (1UL << 63) // http://elixir.free-electrons.com/linux/latest/source/arch/arm/include/uapi/asm/hwcap.h #define ARM_HWCAP_SWP (1UL << 0) diff --git a/src/impl_aarch64__base_implementation.inl b/src/impl_aarch64__base_implementation.inl index 16960a9..228a5bf 100644 --- a/src/impl_aarch64__base_implementation.inl +++ b/src/impl_aarch64__base_implementation.inl @@ -136,7 +136,9 @@ AARCH64_HWCAP2_SME_SF8FMA) \ LINE(AARCH64_SME_SF8DP4, smesf8dp4, "smesf8dp4", 0, \ AARCH64_HWCAP2_SME_SF8DP4) \ - LINE(AARCH64_SME_SF8DP2, smesf8dp2, "smesf8dp2", 0, AARCH64_HWCAP2_SME_SF8DP2) + LINE(AARCH64_SME_SF8DP2, smesf8dp2, "smesf8dp2", 0, \ + AARCH64_HWCAP2_SME_SF8DP2) \ + LINE(AARCH64_POE, poe, "poe", 0, AARCH64_HWCAP2_POE) #define INTROSPECTION_PREFIX Aarch64 #define INTROSPECTION_ENUM_PREFIX AARCH64 diff --git a/test/cpuinfo_aarch64_test.cc b/test/cpuinfo_aarch64_test.cc index a84e6b6..b09cbfa 100644 --- a/test/cpuinfo_aarch64_test.cc +++ b/test/cpuinfo_aarch64_test.cc @@ -330,6 +330,7 @@ CPU revision : 3)"); EXPECT_FALSE(info.features.smesf8fma); EXPECT_FALSE(info.features.smesf8dp4); EXPECT_FALSE(info.features.smesf8dp2); + EXPECT_FALSE(info.features.poe); } #elif defined(CPU_FEATURES_OS_MACOS) TEST_F(CpuidAarch64Test, FromDarwinSysctlFromName) {