xref: /openbmc/linux/arch/powerpc/include/asm/asm-compat.h (revision 8ef9ea1503d0a129cc6f5cf48fb63633efa5d766)
1 #ifndef _ASM_POWERPC_ASM_COMPAT_H
2 #define _ASM_POWERPC_ASM_COMPAT_H
3 
4 #include <asm/asm-const.h>
5 #include <asm/types.h>
6 #include <asm/ppc-opcode.h>
7 
8 #ifdef __powerpc64__
9 
10 /* operations for longs and pointers */
11 #define PPC_LL		stringify_in_c(ld)
12 #define PPC_STL		stringify_in_c(std)
13 #define PPC_STLU	stringify_in_c(stdu)
14 #define PPC_LCMPI	stringify_in_c(cmpdi)
15 #define PPC_LCMPLI	stringify_in_c(cmpldi)
16 #define PPC_LCMP	stringify_in_c(cmpd)
17 #define PPC_LONG	stringify_in_c(.8byte)
18 #define PPC_LONG_ALIGN	stringify_in_c(.balign 8)
19 #define PPC_TLNEI	stringify_in_c(tdnei)
20 #define PPC_LLARX	stringify_in_c(ldarx)
21 #define PPC_STLCX	stringify_in_c(stdcx.)
22 #define PPC_CNTLZL	stringify_in_c(cntlzd)
23 #define PPC_MTOCRF(FXM, RS) MTOCRF((FXM), RS)
24 #define PPC_SRL		stringify_in_c(srd)
25 #define PPC_LR_STKOFF	16
26 #define PPC_MIN_STKFRM	112
27 
28 #ifdef __BIG_ENDIAN__
29 #define LHZX_BE	stringify_in_c(lhzx)
30 #define LWZX_BE	stringify_in_c(lwzx)
31 #define LDX_BE	stringify_in_c(ldx)
32 #define STWX_BE	stringify_in_c(stwx)
33 #define STDX_BE	stringify_in_c(stdx)
34 #else
35 #define LHZX_BE	stringify_in_c(lhbrx)
36 #define LWZX_BE	stringify_in_c(lwbrx)
37 #define LDX_BE	stringify_in_c(ldbrx)
38 #define STWX_BE	stringify_in_c(stwbrx)
39 #define STDX_BE	stringify_in_c(stdbrx)
40 #endif
41 
42 #ifdef CONFIG_CC_IS_CLANG
43 #define DS_FORM_CONSTRAINT "Z<>"
44 #else
45 #define DS_FORM_CONSTRAINT "YZ<>"
46 #endif
47 
48 #else /* 32-bit */
49 
50 /* operations for longs and pointers */
51 #define PPC_LL		stringify_in_c(lwz)
52 #define PPC_STL		stringify_in_c(stw)
53 #define PPC_STLU	stringify_in_c(stwu)
54 #define PPC_LCMPI	stringify_in_c(cmpwi)
55 #define PPC_LCMPLI	stringify_in_c(cmplwi)
56 #define PPC_LCMP	stringify_in_c(cmpw)
57 #define PPC_LONG	stringify_in_c(.long)
58 #define PPC_LONG_ALIGN	stringify_in_c(.balign 4)
59 #define PPC_TLNEI	stringify_in_c(twnei)
60 #define PPC_LLARX	stringify_in_c(lwarx)
61 #define PPC_STLCX	stringify_in_c(stwcx.)
62 #define PPC_CNTLZL	stringify_in_c(cntlzw)
63 #define PPC_MTOCRF	stringify_in_c(mtcrf)
64 #define PPC_SRL		stringify_in_c(srw)
65 #define PPC_LR_STKOFF	4
66 #define PPC_MIN_STKFRM	16
67 
68 #endif
69 
70 #endif /* _ASM_POWERPC_ASM_COMPAT_H */
71