__asm__ (
__asm__ __volatile__ (
__compare_and_swap (long int *p, long int oldval, long int newval){  int ret;  MEMORY_BARRIER ();  __asm__ (	   "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");  MEMORY_BARRIER ();  return ret == 0;}