compiler.h 939 B

1234567891011121314151617181920212223242526272829
  1. #ifndef __ASM_ARM_COMPILER_H
  2. #define __ASM_ARM_COMPILER_H
  3. /*
  4. * This is used to ensure the compiler did actually allocate the register we
  5. * asked it for some inline assembly sequences. Apparently we can't trust
  6. * the compiler from one version to another so a bit of paranoia won't hurt.
  7. * This string is meant to be concatenated with the inline asm string and
  8. * will cause compilation to stop on mismatch.
  9. * (for details, see gcc PR 15089)
  10. * For compatibility with clang, we have to specifically take the equivalence
  11. * of 'r11' <-> 'fp' and 'r12' <-> 'ip' into account as well.
  12. */
  13. #define __asmeq(x, y) \
  14. ".ifnc " x "," y "; " \
  15. ".ifnc " x y ",fpr11; " \
  16. ".ifnc " x y ",r11fp; " \
  17. ".ifnc " x y ",ipr12; " \
  18. ".ifnc " x y ",r12ip; " \
  19. ".err; " \
  20. ".endif; " \
  21. ".endif; " \
  22. ".endif; " \
  23. ".endif; " \
  24. ".endif\n\t"
  25. #endif /* __ASM_ARM_COMPILER_H */