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 */ 32