special_insns.h 925 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __ALPHA_SPECIAL_INSNS_H
  3. #define __ALPHA_SPECIAL_INSNS_H
  4. enum implver_enum {
  5. IMPLVER_EV4,
  6. IMPLVER_EV5,
  7. IMPLVER_EV6
  8. };
  9. #ifdef CONFIG_ALPHA_GENERIC
  10. #define implver() \
  11. ({ unsigned long __implver; \
  12. __asm__ ("implver %0" : "=r"(__implver)); \
  13. (enum implver_enum) __implver; })
  14. #else
  15. /* Try to eliminate some dead code. */
  16. #ifdef CONFIG_ALPHA_EV4
  17. #define implver() IMPLVER_EV4
  18. #endif
  19. #ifdef CONFIG_ALPHA_EV5
  20. #define implver() IMPLVER_EV5
  21. #endif
  22. #if defined(CONFIG_ALPHA_EV6)
  23. #define implver() IMPLVER_EV6
  24. #endif
  25. #endif
  26. enum amask_enum {
  27. AMASK_BWX = (1UL << 0),
  28. AMASK_FIX = (1UL << 1),
  29. AMASK_CIX = (1UL << 2),
  30. AMASK_MAX = (1UL << 8),
  31. AMASK_PRECISE_TRAP = (1UL << 9),
  32. };
  33. #define amask(mask) \
  34. ({ unsigned long __amask, __input = (mask); \
  35. __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \
  36. __amask; })
  37. #endif /* __ALPHA_SPECIAL_INSNS_H */