Messages in this thread | | On Sun, Jan 31, 2010 at 03:52:55PM -0500, Mathieu Desnoyers wrote: > +/* > + * X86 spinlock-mb mappings. Use standard spinlocks with acquire/release > + * semantics. Associated memory barriers are defined as no-ops, because the > + * spinlock LOCK-prefixed atomic operations imply a full memory barrier. > + */ > + > +#define spin_lock__no_acquire spin_lock > +#define spin_unlock__no_release spin_unlock > + > +#define spin_lock_irq__no_acquire spin_lock_irq > +#define spin_unlock_irq__no_release spin_unlock_irq > + > +#define raw_spin_lock__no_acquire raw_spin_lock > +#define raw_spin_unlock__no_release raw_spin_unlock > + > +#define raw_spin_lock_irq__no_acquire raw_spin_lock_irq > +#define raw_spin_unlock_irq__no_release raw_spin_unlock_irq > + > +#define smp_acquire__after_spin_lock() do { } while (0) > +#define smp_release__before_spin_unlock() do { } while (0) > + > +#define smp_mb__after_spin_lock() do { } while (0) > +#define smp_mb__before_spin_unlock() do { } while (0)
Oh, and that one's wrong. loads can pass spin_unlock on x86 so it needs to be smp_mb().
| |