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]