mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 19:13:39 -04:00
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Update defconfigs [POWERPC] atomic_dec_if_positive sign extension fix [POWERPC] Fix OF node refcnt underflow in 836x and 832x platform code [POWERPC] Make it blatantly clear; mpc5200 device tree is not yet stable [POWERPC] Fix broken DMA on non-LPAR pSeries [POWERPC] Fix cell's mmio nvram to properly parse device tree [POWERPC] Remove bogus sanity check in pci -> OF node code
This commit is contained in:
@@ -207,7 +207,8 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
|
||||
|
||||
/*
|
||||
* Atomically test *v and decrement if it is greater than 0.
|
||||
* The function returns the old value of *v minus 1.
|
||||
* The function returns the old value of *v minus 1, even if
|
||||
* the atomic variable, v, was not decremented.
|
||||
*/
|
||||
static __inline__ int atomic_dec_if_positive(atomic_t *v)
|
||||
{
|
||||
@@ -216,14 +217,15 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
|
||||
__asm__ __volatile__(
|
||||
LWSYNC_ON_SMP
|
||||
"1: lwarx %0,0,%1 # atomic_dec_if_positive\n\
|
||||
addic. %0,%0,-1\n\
|
||||
cmpwi %0,1\n\
|
||||
addi %0,%0,-1\n\
|
||||
blt- 2f\n"
|
||||
PPC405_ERR77(0,%1)
|
||||
" stwcx. %0,0,%1\n\
|
||||
bne- 1b"
|
||||
ISYNC_ON_SMP
|
||||
"\n\
|
||||
2:" : "=&r" (t)
|
||||
2:" : "=&b" (t)
|
||||
: "r" (&v->counter)
|
||||
: "cc", "memory");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user