arm_features.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef __ARM_FEATURES_H__
  2. #define __ARM_FEATURES_H__
  3. #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
  4. || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
  5. || defined(__ARM_ARCH_7EM__)
  6. #define HAVE_ARMV7
  7. #define HAVE_ARMV6
  8. #define HAVE_ARMV5
  9. #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
  10. || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
  11. || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
  12. #define HAVE_ARMV6
  13. #define HAVE_ARMV5
  14. #elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5E__) \
  15. || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
  16. #define HAVE_ARMV5
  17. #endif
  18. /* no need for HAVE_NEON - GCC defines __ARM_NEON__ consistently */
  19. /* global function/external symbol */
  20. #ifndef __MACH__
  21. #define ESYM(name) name
  22. #define FUNCTION(name) \
  23. .globl name; \
  24. .type name, %function; \
  25. name
  26. #define EXTRA_UNSAVED_REGS
  27. #else
  28. #define ESYM(name) _##name
  29. #define FUNCTION(name) \
  30. .globl ESYM(name); \
  31. name: \
  32. ESYM(name)
  33. // r7 is preserved, but add it for EABI alignment..
  34. #define EXTRA_UNSAVED_REGS r7, r9,
  35. #endif
  36. #endif /* __ARM_FEATURES_H__ */