From be814863cdd5f61d9a16eec012d500550053c8c6 Mon Sep 17 00:00:00 2001 From: Jaxson Han Date: Tue, 25 May 2021 07:25:00 +0100 Subject: [PATCH] aarch64: Prepare for booting with EL2 Prepare for allowing boot-wrapper to be entered in EL2. Detect current EL and set the corresponding EL registers. Upstream-Status: Pending Signed-off-by: Jaxson Han Reviewed-by: Andre Przywara --- arch/aarch64/boot.S | 8 ++++++++ arch/aarch64/utils.S | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S index 6b45afc..908764a 100644 --- a/arch/aarch64/boot.S +++ b/arch/aarch64/boot.S @@ -195,10 +195,18 @@ ASM_FUNC(jump_kernel) */ bfi x4, x19, #5, #1 + mrs x5, CurrentEL + cmp x5, #CURRENTEL_EL2 + b.eq 1f + msr elr_el3, x19 msr spsr_el3, x4 eret +1: msr elr_el2, x19 + msr spsr_el2, x4 + eret + .ltorg .data diff --git a/arch/aarch64/utils.S b/arch/aarch64/utils.S index 85c7f8a..f02a249 100644 --- a/arch/aarch64/utils.S +++ b/arch/aarch64/utils.S @@ -34,10 +34,18 @@ ASM_FUNC(find_logical_id) ret /* - * Setup EL3 vectors + * Setup EL3/EL2 vectors * x0: vector address */ ASM_FUNC(setup_vector) + mrs x1, CurrentEL + cmp x1, #CURRENTEL_EL2 + b.eq 1f + msr VBAR_EL3, x0 isb ret + +1: msr VBAR_EL2, x0 + isb + ret