1/* 2 * Copyright 2014, General Dynamics C4 Systems 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 "p15, 0, %0, c15, c12, 1" 13#define PMCR "p15, 0, %0, c15, c12, 0" 14 15/* these numbers are taking from the document 16 * "Application Note 195 17 * ARM11 performance monitor unit" 18 */ 19#define PMCR_CCNT_IRQ 6 20#define PMCR_OVERFLOW_FLAG 10 21 22static inline void armv_enableOverflowIRQ(void) 23{ 24 word_t val; 25 MRC(PMCR, val); 26 val |= BIT(PMCR_CCNT_IRQ); 27 MCR(PMCR, val); 28} 29 30static inline void armv_handleOverflowIRQ(void) 31{ 32 word_t pmcr; 33 MRC(PMCR, pmcr); 34 pmcr |= PMCR_OVERFLOW_FLAG; 35 MCR(PMCR, pmcr); 36} 37#endif /* CONFIG_ENABLE_BENCHMARKS */ 38