__compare_and_swap (long *p, long oldval, long newval)
__compare_and_swap (long int *p, long int oldval, long int newval)
__compare_and_swap (long *p, long oldval, long newval){  int ret;  sync();  __asm__ __volatile__(		       "0:    lwarx %0,0,%1 ;"		       "      xor. %0,%3,%0;"		       "      bne 1f;"		       "      stwcx. %2,0,%1;"		       "      bne- 0b;"		       "1:    "	: "=&r"(ret)	: "r"(p), "r"(newval), "r"(oldval)	: "cr0", "memory");  sync();  return ret == 0;}