xref: /linux/arch/sparc/include/asm/asm.h (revision b8bb76713ec50df2f11efee386e16f93d51e1076)
1 #ifndef _SPARC_ASM_H
2 #define _SPARC_ASM_H
3 
4 /* Macros to assist the sharing of assembler code between 32-bit and
5  * 64-bit sparc.
6  */
7 
8 #ifdef CONFIG_SPARC64
9 #define BRANCH32(TYPE, PREDICT, DEST) \
10 	TYPE,PREDICT	%icc, DEST
11 #define BRANCH32_ANNUL(TYPE, PREDICT, DEST) \
12 	TYPE,a,PREDICT	%icc, DEST
13 #define BRANCH_REG_ZERO(PREDICT, REG, DEST) \
14 	brz,PREDICT	REG, DEST
15 #define BRANCH_REG_ZERO_ANNUL(PREDICT, REG, DEST) \
16 	brz,a,PREDICT	REG, DEST
17 #define BRANCH_REG_NOT_ZERO(PREDICT, REG, DEST) \
18 	brnz,PREDICT	REG, DEST
19 #define BRANCH_REG_NOT_ZERO_ANNUL(PREDICT, REG, DEST) \
20 	brnz,a,PREDICT	REG, DEST
21 #else
22 #define BRANCH32(TYPE, PREDICT, DEST) \
23 	TYPE		DEST
24 #define BRANCH32_ANNUL(TYPE, PREDICT, DEST) \
25 	TYPE,a		DEST
26 #define BRANCH_REG_ZERO(PREDICT, REG, DEST) \
27 	cmp		REG, 0; \
28 	be		DEST
29 #define BRANCH_REG_ZERO_ANNUL(PREDICT, REG, DEST) \
30 	cmp		REG, 0; \
31 	be,a		DEST
32 #define BRANCH_REG_NOT_ZERO(PREDICT, REG, DEST) \
33 	cmp		REG, 0; \
34 	bne		DEST
35 #define BRANCH_REG_NOT_ZERO_ANNUL(PREDICT, REG, DEST) \
36 	cmp		REG, 0; \
37 	bne,a		DEST
38 #endif
39 
40 #endif /* _SPARC_ASM_H */
41