[PATCH] ppc64: speedup cmpxchg
authorAnton Blanchard <anton@samba.org>
Tue, 6 Sep 2005 03:05:58 +0000 (13:05 +1000)
committerPaul Mackerras <paulus@samba.org>
Tue, 6 Sep 2005 06:07:53 +0000 (16:07 +1000)
commitb2c0ab17ba751abe13a28508b1ac7e9ca074cd87
tree08abcde7f48b3393afcae069e3668923ee3e4492
parent4721e2214b5fd6eca48caea76afb1bad3148930f
[PATCH] ppc64: speedup cmpxchg

cmpxchg has the following code:

__typeof__(*(ptr)) _o_ = (o);
__typeof__(*(ptr)) _n_ = (n);

Unfortunately it makes gcc 4.0 store and load the variables to the stack.
Eg in atomic_dec_and_test we get:

  stw     r10,112(r1)
  stw     r9,116(r1)
  lwz     r9,112(r1)
  lwz     r0,116(r1)

x86 is just casting the values so do that instead. Also change __xchg*
and __cmpxchg* to take unsigned values, removing a few sign extensions.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
include/asm-ppc64/system.h