PAPI 7.1.0.0
Loading...
Searching...
No Matches
alpha.h File Reference
Include dependency graph for alpha.h:

Go to the source code of this file.

Macros

#define AO_NO_DD_ORDERING
 
#define AO_HAVE_nop_full
 
#define AO_HAVE_nop_write
 
#define AO_HAVE_compare_and_swap
 

Functions

AO_INLINE void AO_nop_full (void)
 
AO_INLINE void AO_nop_write (void)
 
AO_INLINE int AO_compare_and_swap (volatile AO_t *addr, AO_t old, AO_t new_val)
 

Macro Definition Documentation

◆ AO_HAVE_compare_and_swap

#define AO_HAVE_compare_and_swap

Definition at line 65 of file alpha.h.

◆ AO_HAVE_nop_full

#define AO_HAVE_nop_full

Definition at line 31 of file alpha.h.

◆ AO_HAVE_nop_write

#define AO_HAVE_nop_write

Definition at line 38 of file alpha.h.

◆ AO_NO_DD_ORDERING

#define AO_NO_DD_ORDERING

Definition at line 23 of file alpha.h.

Function Documentation

◆ AO_compare_and_swap()

AO_INLINE int AO_compare_and_swap ( volatile AO_t addr,
AO_t  old,
AO_t  new_val 
)

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()

AO_INLINE void AO_nop_full ( void  )

Definition at line 27 of file alpha.h.

28{
29 __asm__ __volatile__("mb" : : : "memory");
30}

◆ AO_nop_write()

AO_INLINE void AO_nop_write ( void  )

Definition at line 34 of file alpha.h.

35{
36 __asm__ __volatile__("wmb" : : : "memory");
37}