doing so helps avant garde users, such as those using simulators that
allow users to configure the number of cores, so as to not have to
manually adjust u-boot sources.  h/w should also be reliably setting
FRR NCPU in the future.
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
 }
 
 int cpu_numcores() {
-       struct cpu_type *cpu;
-       cpu = gd->cpu;
+       ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC85xx_PIC_ADDR;
+       struct cpu_type *cpu = gd->cpu;
+
+       /* better to query feature reporting register than just assume 1 */
+       if (cpu == &cpu_type_unknown)
+               return ((in_be32(&pic->frr) & MPC85xx_PICFRR_NCPU_MASK) >>
+                       MPC85xx_PICFRR_NCPU_SHIFT) + 1;
+
        return cpu->num_cores;
 }
 
 
        u32     eoi;            /* End Of IRQ */
        u8      res9[3916];
        u32     frr;            /* Feature Reporting */
+#define MPC85xx_PICFRR_NCPU_MASK       0x00001f00
+#define MPC85xx_PICFRR_NCPU_SHIFT      8
        u8      res10[28];
        u32     gcr;            /* Global Configuration */
 #define MPC85xx_PICGCR_RST     0x80000000