in include/asm/cmpxchg.h [150:162]
static inline unsigned long __xchg(volatile void *ptr, unsigned long with,
int size)
{
switch (size) {
case 1:
case 2:
return xchg_small(ptr, with, size);
case 4:
return xchg_u32(ptr, with);
default:
return __xchg_called_with_bad_pointer();
}
}