diff --git a/include/cpuinfo_aarch64.h b/include/cpuinfo_aarch64.h index d85d46d..1b57d21 100644 --- a/include/cpuinfo_aarch64.h +++ b/include/cpuinfo_aarch64.h @@ -71,6 +71,7 @@ typedef struct { int dgh : 1; // Data Gathering Hint instruction. int rng : 1; // True random number generator support. int bti : 1; // Branch target identification. + int mte : 1; // Memory tagging extension. // Make sure to update Aarch64FeaturesEnum below if you add a field here. } Aarch64Features; @@ -139,6 +140,7 @@ typedef enum { AARCH64_DGH, AARCH64_RNG, AARCH64_BTI, + AARCH64_MTE, AARCH64_LAST_, } Aarch64FeaturesEnum; diff --git a/include/internal/hwcaps.h b/include/internal/hwcaps.h index 62037c8..70829c1 100644 --- a/include/internal/hwcaps.h +++ b/include/internal/hwcaps.h @@ -79,6 +79,7 @@ CPU_FEATURES_START_CPP_NAMESPACE #define AARCH64_HWCAP2_DGH (1UL << 15) #define AARCH64_HWCAP2_RNG (1UL << 16) #define AARCH64_HWCAP2_BTI (1UL << 17) +#define AARCH64_HWCAP2_MTE (1UL << 18) // 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/cpuinfo_aarch64.c b/src/cpuinfo_aarch64.c index 0a52718..62d6905 100644 --- a/src/cpuinfo_aarch64.c +++ b/src/cpuinfo_aarch64.c @@ -75,7 +75,8 @@ FEATURE(AARCH64_BF16, bf16, "bf16", 0, AARCH64_HWCAP2_BF16) \ FEATURE(AARCH64_DGH, dgh, "dgh", 0, AARCH64_HWCAP2_DGH) \ FEATURE(AARCH64_RNG, rng, "rng", 0, AARCH64_HWCAP2_RNG) \ - FEATURE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI) + FEATURE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI) \ + FEATURE(AARCH64_MTE, mte, "mte", 0, AARCH64_HWCAP2_MTE) #define DEFINE_TABLE_FEATURE_TYPE Aarch64Features #include "define_tables.h" diff --git a/test/cpuinfo_aarch64_test.cc b/test/cpuinfo_aarch64_test.cc index 5afaaa8..20f0996 100644 --- a/test/cpuinfo_aarch64_test.cc +++ b/test/cpuinfo_aarch64_test.cc @@ -165,6 +165,7 @@ CPU revision : 3)"); EXPECT_FALSE(info.features.dgh); EXPECT_FALSE(info.features.rng); EXPECT_FALSE(info.features.bti); + EXPECT_FALSE(info.features.mte); } } // namespace