1 /* 2 * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <amu.h> 8 #include <arch.h> 9 #include <arch_helpers.h> 10 11 void amu_enable(int el2_unused) 12 { 13 uint64_t features; 14 15 features = read_id_pfr0() >> ID_PFR0_AMU_SHIFT; 16 if ((features & ID_PFR0_AMU_MASK) == 1) { 17 if (el2_unused) { 18 uint64_t v; 19 20 /* 21 * Non-secure access from EL0 or EL1 to the Activity Monitor 22 * registers do not trap to EL2. 23 */ 24 v = read_hcptr(); 25 v &= ~TAM_BIT; 26 write_hcptr(v); 27 } 28 29 /* Enable group 0 counters */ 30 write_amcntenset0(AMU_GROUP0_COUNTERS_MASK); 31 } 32 } 33