Russell King <[EMAIL PROTECTED]> wrote: > These are the constant versions, where the compiler can optimise the > mask and word offset itself.
So my inclusion of ARM is correct... Under some circumstances it will write to the target word when it wouldn't actually make a change: static inline int ____atomic_test_and_set_bit(unsigned int bit, volatile unsigned long *p) { unsigned long flags; unsigned int res; unsigned long mask = 1UL << (bit & 31); p += bit >> 5; raw_local_irq_save(flags); res = *p; *p = res | mask; raw_local_irq_restore(flags); return res & mask; } Remember: *p is volatile. David - 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/