1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9#include <config.h>
10#ifdef CONFIG_ENABLE_BENCHMARKS
11
12#define CCNT "PMCCNTR_EL0"
13#define PMCR "PMCR_EL0"
14#define PMCNTENSET "PMCNTENSET_EL0"
15#define PMINTENSET "PMINTENSET_EL1"
16#define PMOVSR "PMOVSCLR_EL0"
17#define CCNT_INDEX 31
18
19static inline void armv_enableOverflowIRQ(void)
20{
21    uint32_t val;
22    MRS(PMINTENSET, val);
23    val |= BIT(CCNT_INDEX);
24    MSR(PMINTENSET, val);
25}
26
27static inline void armv_handleOverflowIRQ(void)
28{
29    uint32_t val = BIT(CCNT_INDEX);
30    MSR(PMOVSR, val);
31}
32
33#endif /* CONFIG_ENABLE_BENCHMARKS */
34
35