1 /* 2 * Copyright (c) 2018-2023, Arm Limited and Contributors. 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_features.h> 11 #include <arch_helpers.h> 12 #include <lib/extensions/mpam.h> 13 14 void mpam_init_el3(void) 15 { 16 /* 17 * Enable MPAM, and disable trapping to EL3 when lower ELs access their 18 * own MPAM registers. 19 */ 20 write_mpam3_el3(MPAM3_EL3_MPAMEN_BIT); 21 22 } 23 24 /* 25 * If EL2 is implemented but unused, disable trapping to EL2 when lower ELs 26 * access their own MPAM registers. 27 */ 28 void mpam_init_el2_unused(void) 29 { 30 write_mpam2_el2(0ULL); 31 32 if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) { 33 write_mpamhcr_el2(0ULL); 34 } 35 36 } 37