xref: /rk3399_ARM-atf/lib/extensions/sys_reg_trace/aarch64/sys_reg_trace.c (revision cff0d54160643e0e082f7541183b3acc4c71602b)
1 /*
2  * Copyright (c) 2021, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <stdbool.h>
8 
9 #include <arch.h>
10 #include <arch_helpers.h>
11 #include <lib/extensions/sys_reg_trace.h>
12 
13 void sys_reg_trace_enable(cpu_context_t *ctx)
14 {
15 	uint64_t val;
16 
17 	/* Retrieve CPTR_EL3 value from the given context 'ctx',
18 	 * and update CPTR_EL3.TTA bit to 0.
19 	 * This function is called while switching context to NS to
20 	 * allow system trace register access to NS-EL2 and NS-EL1
21 	 * when NS-EL2 is implemented but not used.
22 	 */
23 	val = read_ctx_reg(get_el3state_ctx(ctx), CTX_CPTR_EL3);
24 	val &= ~TTA_BIT;
25 	write_ctx_reg(get_el3state_ctx(ctx), CTX_CPTR_EL3, val);
26 }
27