summaryrefslogtreecommitdiffstats
path: root/bsps/aarch64/shared/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/aarch64/shared/start/start.S')
-rw-r--r--bsps/aarch64/shared/start/start.S15
1 files changed, 8 insertions, 7 deletions
diff --git a/bsps/aarch64/shared/start/start.S b/bsps/aarch64/shared/start/start.S
index 338c51f7d0..bc1fb00d70 100644
--- a/bsps/aarch64/shared/start/start.S
+++ b/bsps/aarch64/shared/start/start.S
@@ -98,7 +98,13 @@ _start:
#endif
msr SCTLR_EL1, x0
-#ifdef BSP_START_IN_EL3_MONITOR_MODE_SUPPORT
+ mrs x0, CurrentEL
+ cmp x0, #(1<<2)
+ b.eq _el1_start
+ cmp x0, #(2<<2)
+ b.eq _el2_start
+
+_el3_start:
/* Drop from EL3 to EL2 */
/* Initialize HCR_EL2 and SCTLR_EL2 */
@@ -131,12 +137,7 @@ _start:
#endif
msr ELR_EL3, x0
eret
-#endif
-#if defined(BSP_START_IN_HYP_SUPPORT) || \
- ( defined(BSP_START_IN_EL3_MONITOR_MODE_SUPPORT) && \
- defined(AARCH64_IS_NONSECURE) \
- )
_el2_start:
/* Drop from EL2 to EL1 */
@@ -159,8 +160,8 @@ _el2_start:
adr x0, _el1_start
msr ELR_EL2, x0
eret
+
_el1_start:
-#endif
#ifdef RTEMS_SMP
/* Read MPIDR and get current processor index */