From 3fe81dcf5db35bd6afe8dd9f6b9ebdd06e9f1369 Mon Sep 17 00:00:00 2001 From: Etienne Carriere Date: Fri, 2 Feb 2018 13:16:18 +0100 Subject: aarch32: use lr as bl32 boot argument on aarch32 only systems Add 'lr_svc' as a boot parameter in AArch32 bl1. This is used by Optee and Trusty to get the non-secure entry point on AArch32 platforms. This change is not ported in AArch64 mode where the BL31, not BL32, is in charge of booting the non secure image (BL33). Signed-off-by: Etienne Carriere --- bl1/aarch32/bl1_exceptions.S | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'bl1') diff --git a/bl1/aarch32/bl1_exceptions.S b/bl1/aarch32/bl1_exceptions.S index f73db402..a1e32f06 100644 --- a/bl1/aarch32/bl1_exceptions.S +++ b/bl1/aarch32/bl1_exceptions.S @@ -73,6 +73,11 @@ debug_loop: 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 -- cgit v1.2.3