PPC 85xx QEMU: Always assume 1 core
authorAlexander Graf <agraf@suse.de>
Wed, 30 Apr 2014 17:21:10 +0000 (19:21 +0200)
committerYork Sun <yorksun@freescale.com>
Tue, 13 May 2014 15:26:55 +0000 (08:26 -0700)
We only need u-boot to bother about a single core in the QEMU machine.
Everything that would require additional knowledge of more cores gets
handled by QEMU and passed straight into the payload we execute.

Because of this setup, it would be counterproductive to enable SMP support
in u-boot. We would have to rip CPUs out of already existing spin tables
and respin them from u-boot. It would be a pretty big mess.

So only assume we have a single core. This fixes errors about CONFIG_MP
being disabled.

Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/cpu/mpc8xxx/cpu.c
board/freescale/qemu-ppce500/qemu-ppce500.c

index dfedc536ffb902144867dd113fe4eb36500ab2e0..13bd0acdfb62b1c4193f89394101514e09a45895 100644 (file)
@@ -177,7 +177,7 @@ struct cpu_type *identify_cpu(u32 ver)
 /*
  * Return a 32-bit mask indicating which cores are present on this SOC.
  */
-u32 cpu_mask(void)
+__weak u32 cpu_mask(void)
 {
        ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
        struct cpu_type *cpu = gd->arch.cpu;
@@ -196,7 +196,7 @@ u32 cpu_mask(void)
 /*
  * Return the number of cores on this SOC.
  */
-int cpu_numcores(void)
+__weak int cpu_numcores(void)
 {
        struct cpu_type *cpu = gd->arch.cpu;
 
index 3dbb0cf43b8a00b0bdcc18a77489336b98a99511..230870d90e442d2d1ac7c6730218bfe725467116 100644 (file)
@@ -346,3 +346,23 @@ ulong get_bus_freq (ulong dummy)
        get_sys_info(&sys_info);
        return sys_info.freq_systembus;
 }
+
+/*
+ * Return the number of cores on this SOC.
+ */
+int cpu_numcores(void)
+{
+       /*
+        * The QEMU u-boot target only needs to drive the first core,
+        * spinning and device tree nodes get driven by QEMU itself
+        */
+       return 1;
+}
+
+/*
+ * Return a 32-bit mask indicating which cores are present on this SOC.
+ */
+u32 cpu_mask(void)
+{
+       return (1 << cpu_numcores()) - 1;
+}