From a24dbdcc12990c085f55795b5c0c9d6746bb0433 Mon Sep 17 00:00:00 2001 From: Lionel Debieve Date: Mon, 5 Mar 2018 15:21:59 +0100 Subject: [PATCH] bl2-el3: Fix bl32 lr_svc used for bl33 entry address When using BL2_EL3, we need to ensure that lr_svc is properly given to bl32 as it was previously made by bl1. Fixes ARM-Software/tf-issues#562 Signed-off-by: Lionel Debieve --- bl2/aarch32/bl2_el3_entrypoint.S | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bl2/aarch32/bl2_el3_entrypoint.S b/bl2/aarch32/bl2_el3_entrypoint.S index 997b069cd..0c7b06455 100644 --- a/bl2/aarch32/bl2_el3_entrypoint.S +++ b/bl2/aarch32/bl2_el3_entrypoint.S @@ -78,6 +78,11 @@ func bl2_run_next_image ldr r1, [r8, #(ENTRY_POINT_INFO_PC_OFFSET + 4)] msr spsr, r1 + /* Some BL32 stages expect lr_svc to provide the BL33 entry address */ + cps #MODE32_svc + ldr lr, [r8, #ENTRY_POINT_INFO_LR_SVC_OFFSET] + cps #MODE32_mon + add r8, r8, #ENTRY_POINT_INFO_ARGS_OFFSET ldm r8, {r0, r1, r2, r3} eret