lkml.org 
[lkml]   [2006]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[2.6 patch] m68k: fix cmpxchg compile errors if CONFIG_RMW_INSNS=n
On Sat, Mar 04, 2006 at 12:28:48PM -0800, Andrew Morton wrote:
> Nick Piggin <nickpiggin@yahoo.com.au> 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 <bunk@stusta.de>

---

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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-08 12:27    [W:0.076 / U:0.200 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site