Browse Source
The `ENABLE_AMU` build option can be used to enable the architecturally defined AMU counters. At present, there is no support for the auxiliary counter group. Change-Id: Ifc7532ef836f83e629f2a146739ab61e75c4abc8 Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>pull/1170/head
Dimitris Papastamos
7 years ago
5 changed files with 78 additions and 1 deletions
@ -0,0 +1,32 @@ |
|||
/*
|
|||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. |
|||
* |
|||
* SPDX-License-Identifier: BSD-3-Clause |
|||
*/ |
|||
|
|||
#include <amu.h> |
|||
#include <arch.h> |
|||
#include <arch_helpers.h> |
|||
|
|||
void amu_enable(int el2_unused) |
|||
{ |
|||
uint64_t features; |
|||
|
|||
features = read_id_pfr0() >> ID_PFR0_AMU_SHIFT; |
|||
if ((features & ID_PFR0_AMU_MASK) == 1) { |
|||
if (el2_unused) { |
|||
uint64_t v; |
|||
|
|||
/*
|
|||
* Non-secure access from EL0 or EL1 to the Activity Monitor |
|||
* registers do not trap to EL2. |
|||
*/ |
|||
v = read_hcptr(); |
|||
v &= ~TAM_BIT; |
|||
write_hcptr(v); |
|||
} |
|||
|
|||
/* Enable group 0 counters */ |
|||
write_amcntenset0(AMU_GROUP0_COUNTERS_MASK); |
|||
} |
|||
} |
Loading…
Reference in new issue