Messages in this thread | | | From | David Howells <> | Subject | Re: [PATCH 3/3] WorkStruct: Use direct assignment rather than cmpxchg() | Date | Thu, 07 Dec 2006 23:58:23 +0000 |
| |
Russell King <rmk+lkml@arm.linux.org.uk> wrote:
> Incorrect. pre-v6 ARM bitops for test_and_xxx_bit() all do: > > save and disable irqs > load value > test bit > if not in desired state, alter bit and write it back > restore irqs
Hmmm... ARM has two implementations. One in the header files which is what I consulted when writing that email:
static inline void ____atomic_set_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
raw_local_irq_save(flags); *p |= mask; raw_local_irq_restore(flags); }
And the other in the libs which does as you say. Why the one in the header file at all?
David - 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/
| |