12559b2c8SAntonio Nino Diaz /* 22559b2c8SAntonio Nino Diaz * Copyright (c) 2019, Arm Limited. All rights reserved. 32559b2c8SAntonio Nino Diaz * 42559b2c8SAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause 52559b2c8SAntonio Nino Diaz */ 62559b2c8SAntonio Nino Diaz 72559b2c8SAntonio Nino Diaz #ifndef ARCH_FEATURES_H 82559b2c8SAntonio Nino Diaz #define ARCH_FEATURES_H 92559b2c8SAntonio Nino Diaz 102559b2c8SAntonio Nino Diaz #include <stdbool.h> 112559b2c8SAntonio Nino Diaz 122559b2c8SAntonio Nino Diaz #include <arch_helpers.h> 132559b2c8SAntonio Nino Diaz 142559b2c8SAntonio Nino Diaz static inline bool is_armv8_2_ttcnp_present(void) 152559b2c8SAntonio Nino Diaz { 162559b2c8SAntonio Nino Diaz return ((read_id_aa64mmfr2_el1() >> ID_AA64MMFR2_EL1_CNP_SHIFT) & 172559b2c8SAntonio Nino Diaz ID_AA64MMFR2_EL1_CNP_MASK) != 0U; 182559b2c8SAntonio Nino Diaz } 192559b2c8SAntonio Nino Diaz 20*cedfa04bSSathees Balya static inline bool is_armv8_4_ttst_present(void) 21*cedfa04bSSathees Balya { 22*cedfa04bSSathees Balya return ((read_id_aa64mmfr2_el1() >> ID_AA64MMFR2_EL1_ST_SHIFT) & 23*cedfa04bSSathees Balya ID_AA64MMFR2_EL1_ST_MASK) == 1U; 24*cedfa04bSSathees Balya } 25*cedfa04bSSathees Balya 262559b2c8SAntonio Nino Diaz #endif /* ARCH_FEATURES_H */ 27