Go to the source code of this file.
◆ AO_HAVE_compare_and_swap
| #define AO_HAVE_compare_and_swap |
◆ AO_HAVE_nop_full
◆ AO_HAVE_nop_write
| #define AO_HAVE_nop_write |
◆ AO_NO_DD_ORDERING
| #define AO_NO_DD_ORDERING |
◆ AO_compare_and_swap()
Definition at line 46 of file alpha.h.
48{
49 unsigned long was_equal;
50 unsigned long temp;
51
52 __asm__ __volatile__(
53 "1: ldq_l %0,%1\n"
54 " cmpeq %0,%4,%2\n"
55 " mov %3,%0\n"
56 " beq %2,2f\n"
57 " stq_c %0,%1\n"
58 " beq %0,1b\n"
59 "2:\n"
60 : "=&r" (temp), "+m" (*addr), "=&r" (was_equal)
61 : "r" (new_val), "Ir" (old)
62 :"memory");
63 return (int)was_equal;
64}
◆ AO_nop_full()
Definition at line 27 of file alpha.h.
28{
29 __asm__ __volatile__("mb" : : : "memory");
30}
◆ AO_nop_write()
Definition at line 34 of file alpha.h.
35{
36 __asm__ __volatile__("wmb" : : : "memory");
37}