[PATCH] atomic_dec_if_positive sign extension fix
Paul Mackerras
paulus at samba.org
Mon Jan 15 10:09:42 EST 2007
Robert Jennings writes:
> Please apply for 2.6.20. If an atomic counter is explicitly set to a
> negative value the atomic_dec_if_positive function will decrement and
> store the next smallest value in the atomic counter contrary to it's
> intended operation.
[snip]
> __asm__ __volatile__(
> LWSYNC_ON_SMP
> "1: lwarx %0,0,%1 # atomic_dec_if_positive\n\
> + extsw %0,%0\n\
> addic. %0,%0,-1\n\
> blt- 2f\n"
> PPC405_ERR77(0,%1)
NAK: Good fix for 64-bit, but it will break 32-bit. I think a better
fix would be to use a cmpwi after the lwarx, and use addi rather than
addic..
Paul.
More information about the Linuxppc-dev
mailing list