Thread (115 messages) 115 messages, 8 authors, 2010-10-06
STALE5734d

[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

* 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;
+#endif
I 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help