[RFC 6/7] ARM: vf610m4: HACK: get dtb pointer from SRC_GPR3
Stefan Agner
stefan at agner.ch
Sun Oct 12 11:14:00 PDT 2014
Get DTB pointer (located in r2) from SRC_GPR3 (argument register
for secondary core)
Signed-off-by: Stefan Agner <stefan at agner.ch>
---
This is clearly a hack but it works around the need of a boot loader
on the Cortex-M4. I guess there is no way neither its acceptable to
do this on machine level..? But then, this can also be done with a
minimal boot loader loaded just in front of the kernel by the m4boot
utility.
arch/arm/kernel/head-nommu.S | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index cc176b6..0468683 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -37,6 +37,10 @@
*
*/
+#define SRC_BASE 0x4006e000
+#define SRC_GPR2 0x28
+#define SRC_GPR3 0x2c
+
__HEAD
#ifdef CONFIG_CPU_THUMBONLY
@@ -57,6 +61,10 @@ ENTRY(stext)
#if defined(CONFIG_CPU_CP15)
mrc p15, 0, r9, c0, c0 @ get processor id
#elif defined(CONFIG_CPU_V7M)
+
+ ldr r0, =SRC_BASE
+ ldr r1, =0xffffffff @ Machine ID
+ ldr r2, [r0, #SRC_GPR3 ] @ DT pointer from argument register
ldr r9, =BASEADDR_V7M_SCB
ldr r9, [r9, V7M_SCB_CPUID]
#else
--
2.1.2
More information about the linux-arm-kernel
mailing list