feat: arch helpers to check RME support
Added helper functions to aid with looking for RME support.
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: Ib678fcaf2f3f0cf7ab9b385bd24e77c5490baf03
diff --git a/src/arch/aarch64/sysregs.h b/src/arch/aarch64/sysregs.h
index 39109d3..9d94c40 100644
--- a/src/arch/aarch64/sysregs.h
+++ b/src/arch/aarch64/sysregs.h
@@ -61,6 +61,15 @@
}
/**
+ * Returns true if the RME feature is implemented.
+ */
+static inline bool is_arch_feat_rme_supported(void)
+{
+ return ((read_msr(ID_AA64PFR0_EL1) >> ID_AA64PFR0_EL1_RME_SHIFT) &
+ ID_AA64PFR0_EL1_RME_MASK) != 0;
+}
+
+/**
* Returns true if the SVE feature is implemented.
*/
bool is_arch_feat_sve_supported(void);
diff --git a/src/arch/aarch64/sysregs_defs.h b/src/arch/aarch64/sysregs_defs.h
index 2f89fb3..f115d01 100644
--- a/src/arch/aarch64/sysregs_defs.h
+++ b/src/arch/aarch64/sysregs_defs.h
@@ -686,3 +686,9 @@
* Branch Target Identification mechanism support in AArch64 state.
*/
#define ID_AA64PFR1_EL1_BT (UINT64_C(0xf) << 0)
+
+/**
+ * RME feature support.
+ */
+#define ID_AA64PFR0_EL1_RME_SHIFT 52
+#define ID_AA64PFR0_EL1_RME_MASK UINT64_C(0xf)