[PATCH] exynos: Support big endian mode in secondary_startup
Mark Brown
broonie at kernel.org
Mon Jul 21 09:01:47 PDT 2014
From: Victor Kamensky <victor.kamensky at linaro.org>
Exynos processors generally operate in little endian mode so their
bootloader and ROM will almost always operate in little endian mode.
This means that if a big endian kernel is run it must switch the CPU
into big endian mode after gaining control.
The 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 which runs first also
works with data that is big endian when the kernel is compiled for big
endian.
[Rewrote commit message. -- broonie]
Signed-off-by: Victor Kamensky <victor.kamensky at linaro.org>
Signed-off-by: Mark Brown <broonie at linaro.org>
---
arch/arm/mach-exynos/headsmp.S | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/mach-exynos/headsmp.S b/arch/arm/mach-exynos/headsmp.S
index b54f9701e421..ac8364efb985 100644
--- a/arch/arm/mach-exynos/headsmp.S
+++ b/arch/arm/mach-exynos/headsmp.S
@@ -18,6 +18,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
--
2.0.1
More information about the linux-arm-kernel
mailing list