X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-ppc64%2Fbitops.h;h=feeeb9b77b2954c4fd301a9a50e430415a4193dd;hb=720b94a4e7548e78be55ab8fd3be4686c57dc808;hp=3f053b6bb71fc7098ee0adafc8dfd2175549e7f9;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/include/asm-ppc64/bitops.h b/include/asm-ppc64/bitops.h index 3f053b6bb..feeeb9b77 100644 --- a/include/asm-ppc64/bitops.h +++ b/include/asm-ppc64/bitops.h @@ -154,6 +154,20 @@ static __inline__ int test_and_change_bit(unsigned long nr, volatile unsigned lo return (old & mask) != 0; } +static __inline__ void set_bits(unsigned long mask, unsigned long *addr) +{ + unsigned long old; + + __asm__ __volatile__( +"1: ldarx %0,0,%3 # set_bit\n\ + or %0,%0,%2\n\ + stdcx. %0,0,%3\n\ + bne- 1b" + : "=&r" (old), "=m" (*addr) + : "r" (mask), "r" (addr), "m" (*addr) + : "cc"); +} + /* * non-atomic versions */