5 cas_unsafe( Mword *ptr, Mword oldval, Mword newval )
8 asm volatile ( " mrs r5, cpsr \n"
20 : "r"(ptr), "r"(oldval), "r"(newval)
21 : "r5", "r6", "memory"
28 cas2_unsafe( Mword *ptr, Mword *oldval, Mword *newval )
31 asm volatile ( " mrs r5, cpsr \n"
41 " streq %5, [%1,#4] \n"
46 : "r"(ptr), "r"(*oldval), "r"(*(oldval+1)), "r"(*newval),
48 : "r5", "r6", "r7", "memory"
58 asm volatile ( " swp %0, %2, [%1] \n "
68 atomic_and (Mword *l, Mword mask)
72 while ( !cas (l, old, old & mask));
77 atomic_or (Mword *l, Mword bits)
81 while ( !cas (l, old, old | bits));