summaryrefslogtreecommitdiff
path: root/lib/extensions/brbe/brbe.c
blob: 1982619b7c92120055a1d3d13fa86e2eda5fcaeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Copyright (c) 2022, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <arch.h>
#include <arch_features.h>
#include <arch_helpers.h>

void brbe_enable(void)
{
	uint64_t val;

	if (is_feat_brbe_present()) {
		/*
		 * MDCR_EL3.SBRBE = 0b01
		 *
		 * Allows BRBE usage in non-secure world and prohibited in
		 * secure world.
		 */
		val = read_mdcr_el3();
		val &= ~(MDCR_SBRBE_MASK << MDCR_SBRBE_SHIFT);
		val |= (0x1UL << MDCR_SBRBE_SHIFT);
		write_mdcr_el3(val);
	}
}