]> git.sur5r.net Git - u-boot/blob - arch/arm/cpu/armv8/transition.S
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / arch / arm / cpu / armv8 / transition.S
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2013
4  * David Feng <fenghua@phytium.com.cn>
5  */
6
7 #include <asm-offsets.h>
8 #include <config.h>
9 #include <linux/linkage.h>
10 #include <asm/macro.h>
11
12 .pushsection .text.armv8_switch_to_el2, "ax"
13 ENTRY(armv8_switch_to_el2)
14         switch_el x6, 1f, 0f, 0f
15 0:
16         cmp x5, #ES_TO_AARCH64
17         b.eq 2f
18         /*
19          * When loading 32-bit kernel, it will jump
20          * to secure firmware again, and never return.
21          */
22         bl armv8_el2_to_aarch32
23 2:
24         /*
25          * x4 is kernel entry point or switch_to_el1
26          * if CONFIG_ARMV8_SWITCH_TO_EL1 is defined.
27          * When running in EL2 now, jump to the
28          * address saved in x4.
29          */
30         br x4
31 1:      armv8_switch_to_el2_m x4, x5, x6
32 ENDPROC(armv8_switch_to_el2)
33 .popsection
34
35 .pushsection .text.armv8_switch_to_el1, "ax"
36 ENTRY(armv8_switch_to_el1)
37         switch_el x6, 0f, 1f, 0f
38 0:
39         /* x4 is kernel entry point. When running in EL1
40          * now, jump to the address saved in x4.
41          */
42         br x4
43 1:      armv8_switch_to_el1_m x4, x5, x6
44 ENDPROC(armv8_switch_to_el1)
45 .popsection
46
47 .pushsection .text.armv8_el2_to_aarch32, "ax"
48 WEAK(armv8_el2_to_aarch32)
49         ret
50 ENDPROC(armv8_el2_to_aarch32)
51 .popsection