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