diff options
author | Jeenu Viswambharan <jeenu.viswambharan@arm.com> | 2017-02-21 14:40:44 +0000 |
---|---|---|
committer | Jeenu Viswambharan <jeenu.viswambharan@arm.com> | 2017-05-02 16:11:12 +0100 |
commit | f4c8aa905414fb021c08370306bd516f678a58bd (patch) | |
tree | 7f727d80afb45c86cf12203e66d49bf23d5bd0b6 /include | |
parent | 7fa3214e18ad640208eaf6c8d6111ec53f3894aa (diff) |
Add macro to check whether the CPU implements an EL
Replace all instances of checks with the new macro.
Change-Id: I0eec39b9376475a1a9707a3115de9d36f88f8a2a
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/lib/aarch64/arch.h | 4 | ||||
-rw-r--r-- | include/lib/aarch64/arch_helpers.h | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/lib/aarch64/arch.h b/include/lib/aarch64/arch.h index ef7241d3..834434ee 100644 --- a/include/lib/aarch64/arch.h +++ b/include/lib/aarch64/arch.h @@ -134,6 +134,10 @@ #define ID_AA64PFR0_EL3_SHIFT 12 #define ID_AA64PFR0_ELX_MASK 0xf +#define EL_IMPL_NONE 0 +#define EL_IMPL_A64ONLY 1 +#define EL_IMPL_A64_A32 2 + #define ID_AA64PFR0_GIC_SHIFT 24 #define ID_AA64PFR0_GIC_WIDTH 4 #define ID_AA64PFR0_GIC_MASK ((1 << ID_AA64PFR0_GIC_WIDTH) - 1) diff --git a/include/lib/aarch64/arch_helpers.h b/include/lib/aarch64/arch_helpers.h index 4f711056..b195ffa2 100644 --- a/include/lib/aarch64/arch_helpers.h +++ b/include/lib/aarch64/arch_helpers.h @@ -352,6 +352,14 @@ DEFINE_RENAME_SYSREG_WRITE_FUNC(icc_eoir1_el1, ICC_EOIR1_EL1) #define IS_IN_EL1() IS_IN_EL(1) #define IS_IN_EL3() IS_IN_EL(3) +/* + * Check if an EL is implemented from AA64PFR0 register fields. 'el' argument + * must be one of 1, 2 or 3. + */ +#define EL_IMPLEMENTED(el) \ + ((read_id_aa64pfr0_el1() >> ID_AA64PFR0_EL##el##_SHIFT) \ + & ID_AA64PFR0_ELX_MASK) + /* Previously defined accesor functions with incomplete register names */ #define read_current_el() read_CurrentEl() |