X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=include%2Farm_features.h;h=7c82ff38faa65bccfd363ac393a538ba15c28ae9;hp=abfd87626d62ec512fbc16cd475e6664c5f14f98;hb=0e4ad31902f206e2c6945632bb1f558eae941ff1;hpb=4ae83961a97c97cf6bf7e775cc08337b292b9853 diff --git a/include/arm_features.h b/include/arm_features.h index abfd8762..7c82ff38 100644 --- a/include/arm_features.h +++ b/include/arm_features.h @@ -1,25 +1,49 @@ #ifndef __ARM_FEATURES_H__ #define __ARM_FEATURES_H__ -#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ - || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ - || defined(__ARM_ARCH_7EM__) +/* note: features only available since: + * __ARM_ARCH gcc 4.8/clang 3.2 + * ARMv8 support gcc 4.8/clang 3.4 + * ARM64 support gcc 4.8/clang 3.5 + */ + +#if defined(__aarch64__) + +#elif (defined(__ARM_ARCH) && __ARM_ARCH >= 8) + +#define HAVE_ARMV8 +#define HAVE_ARMV7 +#define HAVE_ARMV6 +#define HAVE_ARMV5 + +#elif (defined(__ARM_ARCH) && __ARM_ARCH >= 7) \ + || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__) #define HAVE_ARMV7 #define HAVE_ARMV6 #define HAVE_ARMV5 -#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ - || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ - || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) +#elif (defined(__ARM_ARCH) && __ARM_ARCH >= 6) \ + || defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ + || defined(__ARM_ARCH_6M__) #define HAVE_ARMV6 #define HAVE_ARMV5 +#define HAVE_PRE_ARMV7 #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5E__) \ || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) #define HAVE_ARMV5 +#define HAVE_PRE_ARMV7 + +#elif defined(__arm__) + +#define HAVE_PRE_ARMV7 #endif @@ -34,6 +58,8 @@ .type name, %function; \ name +#define EXTRA_UNSAVED_REGS + #else #define ESYM(name) _##name @@ -42,6 +68,13 @@ name: \ ESYM(name) +// r7 is preserved, but add it for EABI alignment.. +#define EXTRA_UNSAVED_REGS r7, r9, + +#endif + +#if defined(__MACH__) || defined(__PIC__) +#define TEXRELS_FORBIDDEN #endif #endif /* __ARM_FEATURES_H__ */