aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Kamensky <victor.kamensky@linaro.org>2013-11-02 11:52:50 -0700
committerGary S. Robertson <gary.robertson@linaro.org>2015-08-08 13:57:45 -0500
commita7a4a283dc96c668dad9842b914d0d718ffa496b (patch)
tree6eeefb635f10716695e3c780d868e57848f4575b
parenteb280a0c490ade0b87482d01c3c555059b7187a6 (diff)
exynos: secondary_startup endian fix
If kernel operates in BE mode on board that has LE bootloader/rom code, we need to switch CPU to operate in BE mode as soon as possible. generic secondary_startup that is called from exynos specific secondary startup code will do the switch, but we need it to do earlier because exynos specific secondary_startup code works with BE data. Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
-rw-r--r--arch/arm/mach-exynos/headsmp.S6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos/headsmp.S b/arch/arm/mach-exynos/headsmp.S
index b54f9701e421..45b3006e4e58 100644
--- a/arch/arm/mach-exynos/headsmp.S
+++ b/arch/arm/mach-exynos/headsmp.S
@@ -11,6 +11,7 @@
*/
#include <linux/linkage.h>
#include <linux/init.h>
+#include <asm/assembler.h>
/*
* exynos4 specific entry point for secondary CPUs. This provides
@@ -18,6 +19,11 @@
* ready for them to initialise.
*/
ENTRY(exynos4_secondary_startup)
+ /*
+ * ROM code operates in little endian mode, when we get control we
+ * need to switch it to big endian mode.
+ */
+ARM_BE8(setend be)
mrc p15, 0, r0, c0, c0, 5
and r0, r0, #15
adr r4, 1f