diff options
author | Antonio Niño Díaz <antonio.ninodiaz@arm.com> | 2019-02-27 14:32:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-27 14:32:35 +0000 |
commit | 57bc6424cd7021e64d2af876b7d79b685893a208 (patch) | |
tree | 7ac40b1632b32078b667add460c4f1a3a0b5ed5b /include/arch/aarch64/arch_features.h | |
parent | fc159c62ed6779bbf64882535e245629dd059e98 (diff) | |
parent | 67b6ff9f8ccd84cea1627d738f3e2d4eb0a789e1 (diff) | |
download | trusted-firmware-a-57bc6424cd7021e64d2af876b7d79b685893a208.tar.gz |
Merge pull request #1829 from antonio-nino-diaz-arm/an/pauth
Add Pointer Authentication (ARMv8.3-PAuth) support to the TF
Diffstat (limited to 'include/arch/aarch64/arch_features.h')
-rw-r--r-- | include/arch/aarch64/arch_features.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/arch/aarch64/arch_features.h b/include/arch/aarch64/arch_features.h index da8b6e4f1c..495ecb3a2f 100644 --- a/include/arch/aarch64/arch_features.h +++ b/include/arch/aarch64/arch_features.h @@ -23,6 +23,23 @@ static inline bool is_armv8_2_ttcnp_present(void) ID_AA64MMFR2_EL1_CNP_MASK) != 0U; } +static inline bool is_armv8_3_pauth_present(void) +{ + uint64_t mask = (ID_AA64ISAR1_GPI_MASK << ID_AA64ISAR1_GPI_SHIFT) | + (ID_AA64ISAR1_GPA_MASK << ID_AA64ISAR1_GPA_SHIFT) | + (ID_AA64ISAR1_API_MASK << ID_AA64ISAR1_API_SHIFT) | + (ID_AA64ISAR1_APA_MASK << ID_AA64ISAR1_APA_SHIFT); + + /* If any of the fields is not zero, PAuth is present */ + return (read_id_aa64isar1_el1() & mask) != 0U; +} + +static inline bool is_armv8_3_pauth_api_present(void) +{ + return ((read_id_aa64isar1_el1() >> ID_AA64ISAR1_API_SHIFT) & + ID_AA64ISAR1_API_MASK) != 0U; +} + static inline bool is_armv8_4_ttst_present(void) { return ((read_id_aa64mmfr2_el1() >> ID_AA64MMFR2_EL1_ST_SHIFT) & |