[PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing
From: tony@atomide.com (Tony Lindgren)
Date: 2010-09-02 17:42:44
Also in:
linux-omap
From: tony@atomide.com (Tony Lindgren)
Date: 2010-09-02 17:42:44
Also in:
linux-omap
* Russell King - ARM Linux [off-list ref] [100902 10:00]:
On Thu, Sep 02, 2010 at 09:18:47AM -0700, Tony Lindgren wrote:quoted
--- a/arch/arm/include/asm/smp_plat.h +++ b/arch/arm/include/asm/smp_plat.h@@ -39,4 +39,20 @@ static inline int cache_ops_need_broadcast(void) #define UP(instr...) _str(instr) #endif +static inline int smp_on_up(void) +{ +#ifdef CONFIG_SMP_ON_UP + int smp_on_up; + + asm( \ + SMP(mov %0, #0) \ + UP(mov %0, #1) \ + : "=r" (smp_on_up)); + + return smp_on_up; +#else + return 0; +#endifI think this is the wrong approach - rather than a function which tells us just if we are a SMP kernel running on UP, why not something which returns whether we're running on SMP and use that to eliminate some of these ifdefs?
Sure. Will has something like this in his patches:
static inline int cpu_is_part_of_mp_system(void)
{
u32 mpidr;
asm volatile("mrc p15, 0, %0, c0, c0, 5" : "=r" (mpidr));
return (mpidr >> 31) ? !(mpidr >> 30) : 0;
}
BTW, so far looks like we should only need this during init to set up things.
Regards,
Tony