x86, 64-bit: add sync_cmpxchg
[linux-2.6] / include / asm-sparc64 / backoff.h
1 #ifndef _SPARC64_BACKOFF_H
2 #define _SPARC64_BACKOFF_H
3
4 #define BACKOFF_LIMIT   (4 * 1024)
5
6 #ifdef CONFIG_SMP
7
8 #define BACKOFF_SETUP(reg)      \
9         mov     1, reg
10
11 #define BACKOFF_SPIN(reg, tmp, label)   \
12         mov     reg, tmp; \
13 88:     brnz,pt tmp, 88b; \
14          sub    tmp, 1, tmp; \
15         set     BACKOFF_LIMIT, tmp; \
16         cmp     reg, tmp; \
17         bg,pn   %xcc, label; \
18          nop; \
19         ba,pt   %xcc, label; \
20          sllx   reg, 1, reg;
21
22 #else
23
24 #define BACKOFF_SETUP(reg)
25 #define BACKOFF_SPIN(reg, tmp, label) \
26         ba,pt   %xcc, label; \
27          nop;
28
29 #endif
30
31 #endif /* _SPARC64_BACKOFF_H */