compat_barrier.h 755 B

123456789101112131415161718192021222324252627282930313233343536
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2018 ARM Limited
  4. */
  5. #ifndef __COMPAT_BARRIER_H
  6. #define __COMPAT_BARRIER_H
  7. #ifndef __ASSEMBLER__
  8. /*
  9. * Warning: This code is meant to be used from the compat vDSO only.
  10. */
  11. #ifdef __arch64__
  12. #error This header is meant to be used with from the compat vDSO only
  13. #endif
  14. #ifdef dmb
  15. #undef dmb
  16. #endif
  17. #define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory")
  18. #define aarch32_smp_mb() dmb(ish)
  19. #define aarch32_smp_rmb() dmb(ishld)
  20. #define aarch32_smp_wmb() dmb(ishst)
  21. #undef smp_mb
  22. #undef smp_rmb
  23. #undef smp_wmb
  24. #define smp_mb() aarch32_smp_mb()
  25. #define smp_rmb() aarch32_smp_rmb()
  26. #define smp_wmb() aarch32_smp_wmb()
  27. #endif /* !__ASSEMBLER__ */
  28. #endif /* __COMPAT_BARRIER_H */