diff options
Diffstat (limited to 'lib/extensions/mpam/mpam.c')
-rw-r--r-- | lib/extensions/mpam/mpam.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/lib/extensions/mpam/mpam.c b/lib/extensions/mpam/mpam.c index e794f013b..65601ddec 100644 --- a/lib/extensions/mpam/mpam.c +++ b/lib/extensions/mpam/mpam.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -7,20 +7,16 @@ #include <stdbool.h> #include <arch.h> +#include <arch_features.h> #include <arch_helpers.h> #include <lib/extensions/mpam.h> -bool mpam_supported(void) -{ - uint64_t features = read_id_aa64dfr0_el1() >> ID_AA64PFR0_MPAM_SHIFT; - - return ((features & ID_AA64PFR0_MPAM_MASK) != 0U); -} - void mpam_enable(bool el2_unused) { - if (!mpam_supported()) + /* Check if MPAM is implemented */ + if (get_mpam_version() == 0U) { return; + } /* * Enable MPAM, and disable trapping to EL3 when lower ELs access their @@ -34,10 +30,11 @@ void mpam_enable(bool el2_unused) * If EL2 is implemented and used, enable trapping to EL2. */ if (el2_unused) { - write_mpam2_el2(0); + write_mpam2_el2(0ULL); - if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) - write_mpamhcr_el2(0); + if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) { + write_mpamhcr_el2(0ULL); + } } else { write_mpam2_el2(MPAM2_EL2_TRAPMPAM0EL1 | MPAM2_EL2_TRAPMPAM1EL1); |