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 Parkstatic 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 Parkstatic 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