projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
board: ls1012a: LS1012A-2G5RDB board support
[oweals/u-boot.git]
/
arch
/
arm
/
cpu
/
armv8
/
transition.S
diff --git
a/arch/arm/cpu/armv8/transition.S
b/arch/arm/cpu/armv8/transition.S
index bbccf2b3958d09a1c0c9c99b4548805421805355..7aa6935318c6a95e8cf9cee28467af432c2fb6e6 100644
(file)
--- a/
arch/arm/cpu/armv8/transition.S
+++ b/
arch/arm/cpu/armv8/transition.S
@@
-10,25
+10,43
@@
#include <linux/linkage.h>
#include <asm/macro.h>
#include <linux/linkage.h>
#include <asm/macro.h>
+.pushsection .text.armv8_switch_to_el2, "ax"
ENTRY(armv8_switch_to_el2)
ENTRY(armv8_switch_to_el2)
- switch_el x
5
, 1f, 0f, 0f
+ switch_el x
6
, 1f, 0f, 0f
0:
0:
+ cmp x5, #ES_TO_AARCH64
+ b.eq 2f
/*
/*
- * x3 is kernel entry point or switch_to_el1
+ * When loading 32-bit kernel, it will jump
+ * to secure firmware again, and never return.
+ */
+ bl armv8_el2_to_aarch32
+2:
+ /*
+ * x4 is kernel entry point or switch_to_el1
* if CONFIG_ARMV8_SWITCH_TO_EL1 is defined.
* When running in EL2 now, jump to the
* if CONFIG_ARMV8_SWITCH_TO_EL1 is defined.
* When running in EL2 now, jump to the
- * address saved in x
3
.
+ * address saved in x
4
.
*/
*/
- br x
3
-1: armv8_switch_to_el2_m x
3, x4, x5
+ br x
4
+1: armv8_switch_to_el2_m x
4, x5, x6
ENDPROC(armv8_switch_to_el2)
ENDPROC(armv8_switch_to_el2)
+.popsection
+.pushsection .text.armv8_switch_to_el1, "ax"
ENTRY(armv8_switch_to_el1)
ENTRY(armv8_switch_to_el1)
- switch_el x
5
, 0f, 1f, 0f
+ switch_el x
6
, 0f, 1f, 0f
0:
0:
- /* x
3
is kernel entry point. When running in EL1
- * now, jump to the address saved in x
3
.
+ /* x
4
is kernel entry point. When running in EL1
+ * now, jump to the address saved in x
4
.
*/
*/
- br x
3
-1: armv8_switch_to_el1_m x
3, x4, x5
+ br x
4
+1: armv8_switch_to_el1_m x
4, x5, x6
ENDPROC(armv8_switch_to_el1)
ENDPROC(armv8_switch_to_el1)
+.popsection
+
+.pushsection .text.armv8_el2_to_aarch32, "ax"
+WEAK(armv8_el2_to_aarch32)
+ ret
+ENDPROC(armv8_el2_to_aarch32)
+.popsection