1 /* 2 * Copyright (c) 2019-2023, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef ARCH_FEATURES_H 8 #define ARCH_FEATURES_H 9 10 #include <stdbool.h> 11 12 #include <arch_helpers.h> 13 14 #define ISOLATE_FIELD(reg, feat) \ 15 ((unsigned int)(((reg) >> (feat ## _SHIFT)) & (feat ## _MASK))) 16 17 static inline bool is_armv7_gentimer_present(void) 18 { 19 return ISOLATE_FIELD(read_id_pfr1(), ID_PFR1_GENTIMER) != 0U; 20 } 21 22 static inline bool is_armv8_2_ttcnp_present(void) 23 { 24 return ISOLATE_FIELD(read_id_mmfr4(), ID_MMFR4_CNP) != 0U; 25 } 26 27 #endif /* ARCH_FEATURES_H */ 28