diff options
Diffstat (limited to 'sys/arm/include/asm.h')
| -rw-r--r-- | sys/arm/include/asm.h | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/sys/arm/include/asm.h b/sys/arm/include/asm.h index 00f8265de7f0a..3ae25b8f6eb20 100644 --- a/sys/arm/include/asm.h +++ b/sys/arm/include/asm.h @@ -130,45 +130,52 @@ .stabs __STRING(_/**/sym),1,0,0,0 #endif /* __STDC__ */ +/* Exactly one of the __ARM_ARCH_*__ macros will be defined by the compiler. */ +/* The _ARM_ARCH_* macros are deprecated and will be removed soon. */ +/* This should be moved into another header so it can be used in + * both asm and C code. machine/asm.h cannot be included in C code. */ +#if defined (__ARM_ARCH_7__) || defined (__ARM_ARCH_7A__) +#define _ARM_ARCH_7 +#define _HAVE_ARMv7_INSTRUCTIONS 1 +#endif -#if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) +#if defined (_HAVE_ARMv7_INSTRUCTIONS) || defined (__ARM_ARCH_6__) || \ + defined (__ARM_ARCH_6J__) || defined (__ARM_ARCH_6K__) || \ + defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__) #define _ARM_ARCH_6 +#define _HAVE_ARMv6_INSTRUCTIONS 1 #endif -#if defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5__) || \ - defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5TE__) || \ +#if defined (_HAVE_ARMv6_INSTRUCTIONS) || defined (__ARM_ARCH_5TE__) || \ defined (__ARM_ARCH_5TEJ__) || defined (__ARM_ARCH_5E__) -#define _ARM_ARCH_5 +#define _ARM_ARCH_5E +#define _HAVE_ARMv5E_INSTRUCTIONS 1 #endif -#if defined (_ARM_ARCH_6) || defined(__ARM_ARCH_5TE__) || \ - defined(__ARM_ARCH_5TEJ__) || defined(__ARM_ARCH_5E__) -#define _ARM_ARCH_5E +#if defined (_HAVE_ARMv5E_INSTRUCTIONS) || defined (__ARM_ARCH_5__) || \ + defined (__ARM_ARCH_5T__) +#define _ARM_ARCH_5 +#define _HAVE_ARMv5_INSTRUCTIONS 1 #endif -#if defined (_ARM_ARCH_5) || defined (__ARM_ARCH_4T__) +#if defined (_HAVE_ARMv5_INSTRUCTIONS) || defined (__ARM_ARCH_4T__) #define _ARM_ARCH_4T +#define _HAVE_ARMv4T_INSTRUCTIONS 1 #endif +/* FreeBSD requires ARMv4, so this is always set. */ +#define _HAVE_ARMv4_INSTRUCTIONS 1 -#if defined (_ARM_ARCH_4T) +#if defined (_HAVE_ARMv4T_INSTRUCTIONS) # define RET bx lr # define RETeq bxeq lr # define RETne bxne lr -# ifdef __STDC__ -# define RETc(c) bx##c lr -# else -# define RETc(c) bx/**/c lr -# endif +# define RETc(c) bx##c lr #else # define RET mov pc, lr # define RETeq moveq pc, lr # define RETne movne pc, lr -# ifdef __STDC__ -# define RETc(c) mov##c pc, lr -# else -# define RETc(c) mov/**/c pc, lr -# endif +# define RETc(c) mov##c pc, lr #endif #endif /* !_MACHINE_ASM_H_ */ |
