on anything without V6K extensions. I think that the byte and word versions are supported on V6 and up though. That'd make both __cmpxchg and __xchg slightly buggy, in different ways. What it does mean is that atomic operations on unsigned shorts using ldrex/strex will only be possible on V6K and up.