|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 2/3] xen/arm: Support kick_cpus for OMAP5
Signed-off-by: Chen Baozi <baozich@xxxxxxxxx>
---
xen/arch/arm/arm32/mode_switch.S | 22 +++++++++++++++++++++-
xen/include/asm-arm/platforms/omap5.h | 14 ++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/xen/arch/arm/arm32/mode_switch.S b/xen/arch/arm/arm32/mode_switch.S
index 3500eb0..ba2a462 100644
--- a/xen/arch/arm/arm32/mode_switch.S
+++ b/xen/arch/arm/arm32/mode_switch.S
@@ -21,11 +21,13 @@
#include <asm/page.h>
#include <asm/platforms/vexpress.h>
#include <asm/platforms/exynos5.h>
+#include <asm/platforms/omap5.h>
#include <asm/asm_defns.h>
#include <asm/gic.h>
/* Wake up secondary cpus
- * This code relies on Machine ID and only works for Vexpress and the Arndale
+ * This code relies on Machine ID and only works for Vexpress, the Arndale
+ * and the OMAP5 uEVM.
* TODO: Move this code either later (via platform specific desc) or in a
bootwrapper
* r5: Machine ID
* Clobber r0 r2 */
@@ -34,6 +36,10 @@ kick_cpus:
ldr r0, =MACH_TYPE_SMDK5250
teq r5, r0 /* Are we running on the
arndale? */
beq kick_cpus_arndale
+ /* for OMAP5432 */
+ ldr r0, =MACH_TYPE_OMAP5_SEVM
+ teq r5, r0
+ beq kick_cpus_omap5
/* otherwise versatile express */
/* write start paddr to v2m sysreg FLAGSSET register */
ldr r0, =(V2M_SYS_MMIO_BASE) /* base V2M sysreg MMIO address
*/
@@ -55,6 +61,20 @@ kick_cpus_arndale:
str r2, [r0]
dsb
ldr r2, =EXYNOS5_GIC_BASE_ADDRESS /* r2 := Exynos5 gic base
address */
+ b kick_cpus_sgi
+kick_cpus_omap5:
+ /* write start paddr to AuxCoreBoot1 where ROM code will jump */
+ ldr r0, =(OMAP_AUX_CORE_BOOT_1)
+ ldr r2, =start
+ add r2, r2, r10
+ str r2, [r0]
+ ldr r0, =(OMAP_AUX_CORE_BOOT_0)
+ mov r2, #0x20
+ str r2, [r0]
+ dsb
+ sev
+ ldr r2, =OMAP5_GIC_BASE_ADDRESS /* r2 := OMAP5 gic base address
*/
+ b kick_cpus_sgi
kick_cpus_sgi:
/* send an interrupt */
ldr r0, =GIC_DR_OFFSET /* GIC distributor offset */
diff --git a/xen/include/asm-arm/platforms/omap5.h
b/xen/include/asm-arm/platforms/omap5.h
index dd8c6ca..6657af6 100644
--- a/xen/include/asm-arm/platforms/omap5.h
+++ b/xen/include/asm-arm/platforms/omap5.h
@@ -17,6 +17,20 @@
#define OMAP5_WKUPGEN_BASE 0x48281000
#define OMAP5_SRAM_PA 0x40300000
+#define OMAP_AUX_CORE_BOOT_0 0x48281800
+#define OMAP_AUX_CORE_BOOT_1 0x48281804
+
+/* Constants below is only used in assembly because the DTS is not yet parsed
*/
+#ifdef __ASSEMBLY__
+
+/* GIC Base Address */
+#define OMAP5_GIC_BASE_ADDRESS 0x48210000
+
+/* OMAP5432 uEVM machine ID */
+#define MACH_TYPE_OMAP5_SEVM 3777
+
+#endif /* __ASSEMBLY__ */
+
#endif /* __ASM_ARM_PLATFORMS_OMAP5_H */
/*
--
1.8.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |