• Anton Blanchard's avatar
    [PATCH] ppc64: speedup cmpxchg · b2c0ab17
    Anton Blanchard authored
    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: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    b2c0ab17
system.h 8.55 KB