still adjusting asm for better as compatibility..
[pcsx_rearmed.git] / include / arm_features.h
1 #ifndef __ARM_FEATURES_H__
2 #define __ARM_FEATURES_H__
3
4 #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
5  || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
6  || defined(__ARM_ARCH_7EM__)
7
8 #define HAVE_ARMV7
9 #define HAVE_ARMV6
10 #define HAVE_ARMV5
11
12 #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
13    || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
14    || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
15
16 #define HAVE_ARMV6
17 #define HAVE_ARMV5
18
19 #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5E__) \
20    || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
21
22 #define HAVE_ARMV5
23
24 #endif
25
26 /* no need for HAVE_NEON - GCC defines __ARM_NEON__ consistently */
27
28 /* global function/external symbol */
29 #ifndef __MACH__
30 #define ESYM(name) name
31
32 #define FUNCTION(name) \
33   .globl name; \
34   .type name, %function; \
35   name
36
37 #else
38 #define ESYM(name) _##name
39
40 #define FUNCTION(name) \
41   .globl ESYM(name); \
42   name: \
43   ESYM(name)
44
45 #endif
46
47 #endif /* __ARM_FEATURES_H__ */