[2.6 patch] m68k: fix cmpxchg compile errors if CONFIG_RMW_INSNS=n

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 04, 2006 at 12:28:48PM -0800, Andrew Morton wrote:
> Nick Piggin <[email protected]> wrote:
> >
> > Roman Zippel wrote:
> > > Hi,
> > > 
> > > On Fri, 3 Mar 2006, Andrew Morton wrote:
> > > 
> > > 
> > >>Yes, we now require cmpxchg of all architectures.
> > > 
> > > 
> > > Actually I'd prefer if we used atomic_cmpxchg() instead.
> > > The cmpxchg() emulation was never added for a good reason - to keep code 
> > > from assuming it can be used it for userspace synchronisation. Using an 
> > > atomic_t here would probably get at least some attention.
> > > 
> > 
> > Yes, I guess that's what Andrew meant. The reason we can require
> > atomic_cmpxchg of all architectures is because it is only guaranteed
> > to work on atomic_t.
> > 
> > Glad to hear it won't be a problem for you though.
> > 
> 
> Could someone with an m68k compiler please send the patch?

It's below.

cu
Adrian


<--  snip  -->


This patch provides a cmpxchg() if CONFIG_RMW_INSNS=n (code stolen from 
m68knommu).


Signed-off-by: Adrian Bunk <[email protected]>

---

 include/asm-m68k/system.h |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

--- linux-2.6.16-rc5-mm3-m68k/include/asm-m68k/system.h.old	2006-03-08 12:10:48.000000000 +0100
+++ linux-2.6.16-rc5-mm3-m68k/include/asm-m68k/system.h	2006-03-08 12:17:47.000000000 +0100
@@ -192,6 +192,21 @@
 #define cmpxchg(ptr,o,n)\
 	((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
 					(unsigned long)(n),sizeof(*(ptr))))
+
+#else
+
+static inline unsigned long cmpxchg(volatile int *p, int old, int new)
+{
+	unsigned long flags;
+	int prev;
+
+	local_irq_save(flags);
+	if ((prev = *p) == old)
+		*p = new;
+	local_irq_restore(flags);
+	return(prev);
+}
+
 #endif
 
 #define arch_align_stack(x) (x)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux