diff options
Diffstat (limited to 'include/lib/aarch64')
-rw-r--r-- | include/lib/aarch64/arch.h | 2 | ||||
-rw-r--r-- | include/lib/aarch64/arch_features.h | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/lib/aarch64/arch.h b/include/lib/aarch64/arch.h index 2f4b0c9..1cbe3c3 100644 --- a/include/lib/aarch64/arch.h +++ b/include/lib/aarch64/arch.h @@ -332,6 +332,7 @@ #define ID_AA64PFR1_EL1_SME_MASK ULL(0xf) #define ID_AA64PFR1_EL1_SME_NOT_SUPPORTED ULL(0x0) #define ID_AA64PFR1_EL1_SME_SUPPORTED ULL(0x1) +#define ID_AA64PFR1_EL1_SME2_SUPPORTED ULL(0x2) /* ID_PFR1_EL1 definitions */ #define ID_PFR1_VIRTEXT_SHIFT U(12) @@ -887,6 +888,7 @@ /* SMCR_ELx definitions */ #define SMCR_ELX_LEN_SHIFT U(0) #define SMCR_ELX_LEN_MASK U(0x1ff) +#define SMCR_ELX_EZT0_BIT (U(1) << 30) #define SMCR_ELX_FA64_BIT (U(1) << 31) /******************************************************************************* diff --git a/include/lib/aarch64/arch_features.h b/include/lib/aarch64/arch_features.h index bb1d156..203d140 100644 --- a/include/lib/aarch64/arch_features.h +++ b/include/lib/aarch64/arch_features.h @@ -232,4 +232,12 @@ static inline bool is_feat_sme_fa64_supported(void) return (features & ID_AA64SMFR0_EL1_FA64_BIT) != 0U; } +static inline bool is_feat_sme2_supported(void) +{ + uint64_t features; + + features = read_id_aa64pfr1_el1() >> ID_AA64PFR1_EL1_SME_SHIFT; + return (features & ID_AA64PFR1_EL1_SME_MASK) >= ID_AA64PFR1_EL1_SME2_SUPPORTED; +} + #endif /* ARCH_FEATURES_H */ |