diff --git a/linux-2.8.38/arch/arm/kernel/smp_scu.c b/linux-2.8.38/arch/arm/kernel/smp_scu.c --- a/linux-2.8.38/arch/arm/kernel/smp_scu.c +++ b/linux-2.8.38/arch/arm/kernel/smp_scu.c @@ -26,7 +26,8 @@ unsigned int __init scu_get_core_count(void __iomem *scu_base) { unsigned int ncores = __raw_readl(scu_base + SCU_CONFIG); - return (ncores & 0x03) + 1; + printk(KERN_WARNING "Numer of cores : %u \n", ncores); + return ncores + 1; } /* diff --git a/src/dev/arm/a9scu.cc b/src/dev/arm/a9scu.cc --- a/src/dev/arm/a9scu.cc +++ b/src/dev/arm/a9scu.cc @@ -63,11 +63,12 @@ pkt->set(1); // SCU already enabled break; case Config: - assert(sys->numContexts() <= 4); + assert(sys->numContexts() <= 8); int smp_bits, core_cnt; smp_bits = power(2,sys->numContexts()) - 1; core_cnt = sys->numContexts() - 1; - pkt->set(smp_bits << 4 | core_cnt); + pkt->set(core_cnt); break; default: // Only configuration register is implemented