root/arch/sparc/include/asm/asm.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_ASM_H
#define _SPARC_ASM_H

/* Macros to assist the sharing of assembler code between 32-bit and
 * 64-bit sparc.
 */

#ifdef CONFIG_SPARC64
#define BRANCH32(TYPE, PREDICT, DEST) \
        TYPE,PREDICT    %icc, DEST
#define BRANCH32_ANNUL(TYPE, PREDICT, DEST) \
        TYPE,a,PREDICT  %icc, DEST
#define BRANCH_REG_ZERO(PREDICT, REG, DEST) \
        brz,PREDICT     REG, DEST
#define BRANCH_REG_ZERO_ANNUL(PREDICT, REG, DEST) \
        brz,a,PREDICT   REG, DEST
#define BRANCH_REG_NOT_ZERO(PREDICT, REG, DEST) \
        brnz,PREDICT    REG, DEST
#define BRANCH_REG_NOT_ZERO_ANNUL(PREDICT, REG, DEST) \
        brnz,a,PREDICT  REG, DEST
#else
#define BRANCH32(TYPE, PREDICT, DEST) \
        TYPE            DEST
#define BRANCH32_ANNUL(TYPE, PREDICT, DEST) \
        TYPE,a          DEST
#define BRANCH_REG_ZERO(PREDICT, REG, DEST) \
        cmp             REG, 0; \
        be              DEST
#define BRANCH_REG_ZERO_ANNUL(PREDICT, REG, DEST) \
        cmp             REG, 0; \
        be,a            DEST
#define BRANCH_REG_NOT_ZERO(PREDICT, REG, DEST) \
        cmp             REG, 0; \
        bne             DEST
#define BRANCH_REG_NOT_ZERO_ANNUL(PREDICT, REG, DEST) \
        cmp             REG, 0; \
        bne,a           DEST
#endif

#endif /* _SPARC_ASM_H */