Pull alexey-fixes into release branch
[sfrench/cifs-2.6.git] / 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         cmp     reg, BACKOFF_LIMIT; \
16         bg,pn   %xcc, label; \
17          nop; \
18         ba,pt   %xcc, label; \
19          sllx   reg, 1, reg;
20
21 #else
22
23 #define BACKOFF_SETUP(reg)
24 #define BACKOFF_SPIN(reg, tmp, label) \
25         ba,pt   %xcc, label; \
26          nop;
27
28 #endif
29
30 #endif /* _SPARC64_BACKOFF_H */