xref: /aosp_15_r20/external/arm-trusted-firmware/include/arch/aarch32/arch_features.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2019, Arm Limited. All rights reserved.
3*54fd6939SJiyong Park  *
4*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park  */
6*54fd6939SJiyong Park 
7*54fd6939SJiyong Park #ifndef ARCH_FEATURES_H
8*54fd6939SJiyong Park #define ARCH_FEATURES_H
9*54fd6939SJiyong Park 
10*54fd6939SJiyong Park #include <stdbool.h>
11*54fd6939SJiyong Park 
12*54fd6939SJiyong Park #include <arch_helpers.h>
13*54fd6939SJiyong Park 
is_armv7_gentimer_present(void)14*54fd6939SJiyong Park static inline bool is_armv7_gentimer_present(void)
15*54fd6939SJiyong Park {
16*54fd6939SJiyong Park 	return ((read_id_pfr1() >> ID_PFR1_GENTIMER_SHIFT) &
17*54fd6939SJiyong Park 		ID_PFR1_GENTIMER_MASK) != 0U;
18*54fd6939SJiyong Park }
19*54fd6939SJiyong Park 
is_armv8_2_ttcnp_present(void)20*54fd6939SJiyong Park static inline bool is_armv8_2_ttcnp_present(void)
21*54fd6939SJiyong Park {
22*54fd6939SJiyong Park 	return ((read_id_mmfr4() >> ID_MMFR4_CNP_SHIFT) &
23*54fd6939SJiyong Park 		ID_MMFR4_CNP_MASK) != 0U;
24*54fd6939SJiyong Park }
25*54fd6939SJiyong Park 
26*54fd6939SJiyong Park #endif /* ARCH_FEATURES_H */
27