1#ifndef _ASM_POWERPC_ASM_COMPAT_H 2#define _ASM_POWERPC_ASM_COMPAT_H 3 4#include <asm/types.h> 5#include <asm/ppc-opcode.h> 6 7#ifdef __ASSEMBLY__ 8# define stringify_in_c(...) __VA_ARGS__ 9# define ASM_CONST(x) x 10#else 11/* This version of stringify will deal with commas... */ 12# define __stringify_in_c(...) #__VA_ARGS__ 13# define stringify_in_c(...) __stringify_in_c(__VA_ARGS__) " " 14# define __ASM_CONST(x) x##UL 15# define ASM_CONST(x) __ASM_CONST(x) 16#endif 17 18 19#ifdef __powerpc64__ 20 21/* operations for longs and pointers */ 22#define PPC_LL stringify_in_c(ld) 23#define PPC_STL stringify_in_c(std) 24#define PPC_STLU stringify_in_c(stdu) 25#define PPC_LCMPI stringify_in_c(cmpdi) 26#define PPC_LONG stringify_in_c(.llong) 27#define PPC_LONG_ALIGN stringify_in_c(.balign 8) 28#define PPC_TLNEI stringify_in_c(tdnei) 29#define PPC_LLARX(t, a, b, eh) PPC_LDARX(t, a, b, eh) 30#define PPC_STLCX stringify_in_c(stdcx.) 31#define PPC_CNTLZL stringify_in_c(cntlzd) 32#define PPC_LR_STKOFF 16 33#define PPC_MIN_STKFRM 112 34 35/* Move to CR, single-entry optimized version. Only available 36 * on POWER4 and later. 37 */ 38#ifdef CONFIG_POWER4_ONLY 39#define PPC_MTOCRF stringify_in_c(mtocrf) 40#else 41#define PPC_MTOCRF stringify_in_c(mtcrf) 42#endif 43 44#else /* 32-bit */ 45 46/* operations for longs and pointers */ 47#define PPC_LL stringify_in_c(lwz) 48#define PPC_STL stringify_in_c(stw) 49#define PPC_STLU stringify_in_c(stwu) 50#define PPC_LCMPI stringify_in_c(cmpwi) 51#define PPC_LONG stringify_in_c(.long) 52#define PPC_LONG_ALIGN stringify_in_c(.balign 4) 53#define PPC_TLNEI stringify_in_c(twnei) 54#define PPC_LLARX(t, a, b, eh) PPC_LWARX(t, a, b, eh) 55#define PPC_STLCX stringify_in_c(stwcx.) 56#define PPC_CNTLZL stringify_in_c(cntlzw) 57#define PPC_MTOCRF stringify_in_c(mtcrf) 58#define PPC_LR_STKOFF 4 59#define PPC_MIN_STKFRM 16 60 61#endif 62 63#ifdef __KERNEL__ 64#ifdef CONFIG_IBM405_ERR77 65/* Erratum #77 on the 405 means we need a sync or dcbt before every 66 * stwcx. The old ATOMIC_SYNC_FIX covered some but not all of this. 67 */ 68#define PPC405_ERR77(ra,rb) stringify_in_c(dcbt ra, rb;) 69#define PPC405_ERR77_SYNC stringify_in_c(sync;) 70#else 71#define PPC405_ERR77(ra,rb) 72#define PPC405_ERR77_SYNC 73#endif 74#endif 75 76#endif /* _ASM_POWERPC_ASM_COMPAT_H */ 77