[U-Boot] [PATCH 3/3] sunxi: Switch to using soc_init hook for setting the ACTLR.SMP bit
Hans de Goede
hdegoede at redhat.com
Wed Jan 21 21:03:27 CET 2015
Replace our current DIY solution for setting the Cortex A7 ACTLR.SMP bit
with using the new soc_init hook and cpu_init_cortex_a7 helper function.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
arch/arm/cpu/armv7/sunxi/Makefile | 1 +
arch/arm/cpu/armv7/sunxi/board.c | 8 --------
arch/arm/cpu/armv7/sunxi/lowlevel_init.S | 19 +++++++++++++++++++
3 files changed, 20 insertions(+), 8 deletions(-)
create mode 100644 arch/arm/cpu/armv7/sunxi/lowlevel_init.S
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
index 1c4b763..27264f5 100644
--- a/arch/arm/cpu/armv7/sunxi/Makefile
+++ b/arch/arm/cpu/armv7/sunxi/Makefile
@@ -7,6 +7,7 @@
#
# SPDX-License-Identifier: GPL-2.0+
#
+obj-y += lowlevel_init.o
obj-y += timer.o
obj-y += board.o
obj-y += clock.o
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index 6e28bcd..3eed8a9 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -72,14 +72,6 @@ void s_init(void)
* access gets messed up (seems cache related) */
setbits_le32(SUNXI_SRAMC_BASE + 0x44, 0x1800);
#endif
-#if !defined CONFIG_SPL_BUILD && (defined CONFIG_MACH_SUN7I || \
- defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I)
- /* Enable SMP mode for CPU0, by setting bit 6 of Auxiliary Ctl reg */
- asm volatile(
- "mrc p15, 0, r0, c1, c0, 1\n"
- "orr r0, r0, #1 << 6\n"
- "mcr p15, 0, r0, c1, c0, 1\n");
-#endif
clock_init();
timer_init();
diff --git a/arch/arm/cpu/armv7/sunxi/lowlevel_init.S b/arch/arm/cpu/armv7/sunxi/lowlevel_init.S
new file mode 100644
index 0000000..f7182e6
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/lowlevel_init.S
@@ -0,0 +1,19 @@
+/*
+ * (C) Copyright 2015 Hans de Goede <hdegoede at redhat.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <config.h>
+#include <version.h>
+#include <linux/linkage.h>
+
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN7I || \
+ defined CONFIG_MACH_SUN8I
+ENTRY(soc_init)
+ mov r9, lr
+ bl cpu_init_cortex_a7
+ bl cpu_init_cp15
+ mov pc, r9 @ back to my caller
+ENDPROC(soc_init)
+#endif
--
2.1.0
More information about the U-Boot
mailing list