feat(smccc): add FEAT_EBEP to FEATURE_AVAILABILITY
Change-Id: Ia545d5c226d3504cd821c704e765542b7d2b838c
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
diff --git a/include/lib/aarch64/arch.h b/include/lib/aarch64/arch.h
index fbef12f..88d1f6b 100644
--- a/include/lib/aarch64/arch.h
+++ b/include/lib/aarch64/arch.h
@@ -338,6 +338,9 @@
/* ID_AA64DFR1_EL1 definitions */
#define ID_AA64DFR1_BRP_SHIFT U(8)
#define ID_AA64DFR1_BRP_WIDTH U(8)
+#define ID_AA64DFR1_EBEP_SHIFT U(48)
+#define ID_AA64DFR1_EBEP_WIDTH U(4)
+#define ID_AA64DFR1_EBEP_SUPPORTED U(1)
/* ID_AA64ISAR0_EL1 definitions */
#define ID_AA64ISAR0_EL1 S3_0_C0_C6_0
@@ -771,7 +774,7 @@
#define MDCR_EnPMSS_BIT (ULL(1) << 44)
#define MDCR_EBWE_BIT (ULL(1) << 43)
#define MDCR_EnPMS3_BIT (ULL(1) << 42)
-#define MDCR_PMEE(x) ((x) << 40)
+#define MDCR_PMEE(x) (ULL(x) << 40)
#define MDCR_EnTB2_BIT (ULL(1) << 39)
#define MDCR_E3BREC_BIT (ULL(1) << 38)
#define MDCR_E3BREW_BIT (ULL(1) << 37)
diff --git a/include/lib/aarch64/arch_features.h b/include/lib/aarch64/arch_features.h
index a873501..c8cad18 100644
--- a/include/lib/aarch64/arch_features.h
+++ b/include/lib/aarch64/arch_features.h
@@ -625,4 +625,10 @@
return EXTRACT(ID_AA64PFR2_EL1_GCIE, read_id_aa64pfr2_el1())
>= ID_AA64PFR2_EL1_GCIE_SUPPORTED;
}
+
+static inline bool is_feat_ebep_supported(void)
+{
+ return EXTRACT(ID_AA64DFR1_EBEP, read_id_aa64dfr1_el1())
+ >= ID_AA64DFR1_EBEP_SUPPORTED;
+}
#endif /* ARCH_FEATURES_H */
diff --git a/tftf/tests/runtime_services/arm_arch_svc/smccc_feature_availability.c b/tftf/tests/runtime_services/arm_arch_svc/smccc_feature_availability.c
index 76b74a9..b70bf54 100644
--- a/tftf/tests/runtime_services/arm_arch_svc/smccc_feature_availability.c
+++ b/tftf/tests/runtime_services/arm_arch_svc/smccc_feature_availability.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2024, Arm Limited. All rights reserved.
+ * Copyright (c) 2024-2025, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -117,6 +117,7 @@
CHECK_BIT_SET(is_feat_doublelock_present, MDCR_TDOSA_BIT);
CHECK_BIT_SET(always_present, MDCR_TDA_BIT);
CHECK_BIT_SET(get_feat_pmuv3_supported, MDCR_TPM_BIT);
+ CHECK_BIT_SET(is_feat_ebep_supported, MDCR_PMEE(1));
CHECK_NO_BITS_SET(MDCR_EL3);
reg = get_feature_for_reg(MPAM3_EL3_OPCODE);