Messages in this thread | | | From | Segher Boessenkool <> | Subject | Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures | Date | Fri, 17 Aug 2007 19:41:13 +0200 |
| |
>> atomic_dec() already has volatile behavior everywhere, so this is >> semantically >> okay, but this code (and any like it) should be calling cpu_relax() >> each >> iteration through the loop, unless there's a compelling reason not >> to. I'll >> allow that for some hardware drivers (possibly this one) such a >> compelling >> reason may exist, but hardware-independent core subsystems probably >> have no >> excuse. > > No it does not have any volatile semantics. atomic_dec() can be > reordered > at will by the compiler within the current basic unit if you do not > add a > barrier.
"volatile" has nothing to do with reordering. atomic_dec() writes to memory, so it _does_ have "volatile semantics", implicitly, as long as the compiler cannot optimise the atomic variable away completely -- any store counts as a side effect.
Segher
- 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/
| |