1a2e702a2SDimitris Papastamos /* 2*4c700c15SGovindraj Raja * Copyright (c) 2018, Arm Limited and Contributors. All rights reserved. 3a2e702a2SDimitris Papastamos * 4a2e702a2SDimitris Papastamos * SPDX-License-Identifier: BSD-3-Clause 5a2e702a2SDimitris Papastamos */ 6a2e702a2SDimitris Papastamos 740daecc1SAntonio Nino Diaz #ifndef CPUAMU_H 840daecc1SAntonio Nino Diaz #define CPUAMU_H 9a2e702a2SDimitris Papastamos 10a2e702a2SDimitris Papastamos /******************************************************************************* 11a2e702a2SDimitris Papastamos * CPU Activity Monitor Unit register specific definitions. 12a2e702a2SDimitris Papastamos ******************************************************************************/ 13a2e702a2SDimitris Papastamos #define CPUAMCNTENCLR_EL0 S3_3_C15_C9_7 14a2e702a2SDimitris Papastamos #define CPUAMCNTENSET_EL0 S3_3_C15_C9_6 15a2e702a2SDimitris Papastamos #define CPUAMCFGR_EL0 S3_3_C15_C10_6 16a2e702a2SDimitris Papastamos #define CPUAMUSERENR_EL0 S3_3_C15_C10_7 17a2e702a2SDimitris Papastamos 18a2e702a2SDimitris Papastamos /* Activity Monitor Event Counter Registers */ 19a2e702a2SDimitris Papastamos #define CPUAMEVCNTR0_EL0 S3_3_C15_C9_0 20a2e702a2SDimitris Papastamos #define CPUAMEVCNTR1_EL0 S3_3_C15_C9_1 21a2e702a2SDimitris Papastamos #define CPUAMEVCNTR2_EL0 S3_3_C15_C9_2 22a2e702a2SDimitris Papastamos #define CPUAMEVCNTR3_EL0 S3_3_C15_C9_3 23a2e702a2SDimitris Papastamos #define CPUAMEVCNTR4_EL0 S3_3_C15_C9_4 24a2e702a2SDimitris Papastamos 25a2e702a2SDimitris Papastamos /* Activity Monitor Event Type Registers */ 26a2e702a2SDimitris Papastamos #define CPUAMEVTYPER0_EL0 S3_3_C15_C10_0 27a2e702a2SDimitris Papastamos #define CPUAMEVTYPER1_EL0 S3_3_C15_C10_1 28a2e702a2SDimitris Papastamos #define CPUAMEVTYPER2_EL0 S3_3_C15_C10_2 29a2e702a2SDimitris Papastamos #define CPUAMEVTYPER3_EL0 S3_3_C15_C10_3 30a2e702a2SDimitris Papastamos #define CPUAMEVTYPER4_EL0 S3_3_C15_C10_4 31a2e702a2SDimitris Papastamos 32d5dfdeb6SJulius Werner #ifndef __ASSEMBLER__ 33a2e702a2SDimitris Papastamos #include <stdint.h> 34a2e702a2SDimitris Papastamos 3540daecc1SAntonio Nino Diaz uint64_t cpuamu_cnt_read(unsigned int idx); 3640daecc1SAntonio Nino Diaz void cpuamu_cnt_write(unsigned int idx, uint64_t val); 37a2e702a2SDimitris Papastamos unsigned int cpuamu_read_cpuamcntenset_el0(void); 38a2e702a2SDimitris Papastamos unsigned int cpuamu_read_cpuamcntenclr_el0(void); 39a2e702a2SDimitris Papastamos void cpuamu_write_cpuamcntenset_el0(unsigned int mask); 40a2e702a2SDimitris Papastamos void cpuamu_write_cpuamcntenclr_el0(unsigned int mask); 41f06890eaSDimitris Papastamos 42f06890eaSDimitris Papastamos int midr_match(unsigned int cpu_midr); 43f06890eaSDimitris Papastamos void cpuamu_context_save(unsigned int nr_counters); 44f06890eaSDimitris Papastamos void cpuamu_context_restore(unsigned int nr_counters); 45f06890eaSDimitris Papastamos 46d5dfdeb6SJulius Werner #endif /* __ASSEMBLER__ */ 47a2e702a2SDimitris Papastamos 4840daecc1SAntonio Nino Diaz #endif /* CPUAMU_H */ 49