blob: a7d3fe605a7ebdfbc5f405e05bfa479e47b2db6e [file] [log] [blame]
Antonio Nino Diaz2559b2c2019-01-11 11:20:10 +00001/*
Andre Przywarafd1dd4c2023-01-25 12:26:14 +00002 * Copyright (c) 2019-2023, Arm Limited. All rights reserved.
Antonio Nino Diaz2559b2c2019-01-11 11:20:10 +00003 *
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
Andre Przywarafd1dd4c2023-01-25 12:26:14 +000014#define ISOLATE_FIELD(reg, feat) \
15 ((unsigned int)(((reg) >> (feat ## _SHIFT)) & (feat ## _MASK)))
16
Antonio Nino Diaz29a24132019-02-06 09:23:04 +000017static inline bool is_armv7_gentimer_present(void)
18{
Andre Przywarafd1dd4c2023-01-25 12:26:14 +000019 return ISOLATE_FIELD(read_id_pfr1(), ID_PFR1_GENTIMER) != 0U;
Antonio Nino Diaz29a24132019-02-06 09:23:04 +000020}
21
Antonio Nino Diaz2559b2c2019-01-11 11:20:10 +000022static inline bool is_armv8_2_ttcnp_present(void)
23{
Andre Przywarafd1dd4c2023-01-25 12:26:14 +000024 return ISOLATE_FIELD(read_id_mmfr4(), ID_MMFR4_CNP) != 0U;
Antonio Nino Diaz2559b2c2019-01-11 11:20:10 +000025}
26
27#endif /* ARCH_FEATURES_H */