From 3cde15fadea9cee8863c05e6908166166e5bca9b Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Thu, 2 Apr 2020 16:20:21 +0900 Subject: [PATCH] xlat_tables_v2: use get_current_el_maybe_constant() in is_dcache_enabled() Using get_current_el_maybe_constant() produces more optimized code because in most cases, we know the exception level at build-time. For example, BL31 runs at EL3, so unneeded code will be trimmed. [before] 0000000000000000 : 0: d5384240 mrs x0, currentel 4: 53020c00 ubfx w0, w0, #2, #2 8: 7100041f cmp w0, #0x1 c: 54000081 b.ne 1c // b.any 10: d5381000 mrs x0, sctlr_el1 14: 53020800 ubfx w0, w0, #2, #1 18: d65f03c0 ret 1c: 7100081f cmp w0, #0x2 20: 54000061 b.ne 2c // b.any 24: d53c1000 mrs x0, sctlr_el2 28: 17fffffb b 14 2c: d53e1000 mrs x0, sctlr_el3 30: 17fffff9 b 14 [after] 0000000000000000 : 0: d53e1000 mrs x0, sctlr_el3 4: 53020800 ubfx w0, w0, #2, #1 8: d65f03c0 ret Change-Id: I3698fae9b517022ff9fbfd4cad3a320c6e137e10 Signed-off-by: Masahiro Yamada --- lib/xlat_tables_v2/aarch64/xlat_tables_arch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c b/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c index 8eeeea1dd..3832b0703 100644 --- a/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c +++ b/lib/xlat_tables_v2/aarch64/xlat_tables_arch.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -135,7 +135,7 @@ bool is_mmu_enabled_ctx(const xlat_ctx_t *ctx) bool is_dcache_enabled(void) { - unsigned int el = (unsigned int)GET_EL(read_CurrentEl()); + unsigned int el = get_current_el_maybe_constant(); if (el == 1U) { return (read_sctlr_el1() & SCTLR_C_BIT) != 0U;