xref: /linux/arch/powerpc/include/asm/asm-compat.h (revision 566ab427f827b0256d3e8ce0235d088e6a9c28bd)
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 LWZX_BE	stringify_in_c(lwzx)
30 #define LDX_BE	stringify_in_c(ldx)
31 #define STWX_BE	stringify_in_c(stwx)
32 #define STDX_BE	stringify_in_c(stdx)
33 #else
34 #define LWZX_BE	stringify_in_c(lwbrx)
35 #define LDX_BE	stringify_in_c(ldbrx)
36 #define STWX_BE	stringify_in_c(stwbrx)
37 #define STDX_BE	stringify_in_c(stdbrx)
38 #endif
39 
40 #ifdef CONFIG_CC_IS_CLANG
41 #define DS_FORM_CONSTRAINT "Z<>"
42 #else
43 #define DS_FORM_CONSTRAINT "YZ<>"
44 #endif
45 
46 #else /* 32-bit */
47 
48 /* operations for longs and pointers */
49 #define PPC_LL		stringify_in_c(lwz)
50 #define PPC_STL		stringify_in_c(stw)
51 #define PPC_STLU	stringify_in_c(stwu)
52 #define PPC_LCMPI	stringify_in_c(cmpwi)
53 #define PPC_LCMPLI	stringify_in_c(cmplwi)
54 #define PPC_LCMP	stringify_in_c(cmpw)
55 #define PPC_LONG	stringify_in_c(.long)
56 #define PPC_LONG_ALIGN	stringify_in_c(.balign 4)
57 #define PPC_TLNEI	stringify_in_c(twnei)
58 #define PPC_LLARX	stringify_in_c(lwarx)
59 #define PPC_STLCX	stringify_in_c(stwcx.)
60 #define PPC_CNTLZL	stringify_in_c(cntlzw)
61 #define PPC_MTOCRF	stringify_in_c(mtcrf)
62 #define PPC_SRL		stringify_in_c(srw)
63 #define PPC_LR_STKOFF	4
64 #define PPC_MIN_STKFRM	16
65 
66 #endif
67 
68 #endif /* _ASM_POWERPC_ASM_COMPAT_H */
69