irqflags.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __ASM_CSKY_IRQFLAGS_H
  3. #define __ASM_CSKY_IRQFLAGS_H
  4. #include <abi/reg_ops.h>
  5. static inline unsigned long arch_local_irq_save(void)
  6. {
  7. unsigned long flags;
  8. flags = mfcr("psr");
  9. asm volatile("psrclr ie\n":::"memory");
  10. return flags;
  11. }
  12. #define arch_local_irq_save arch_local_irq_save
  13. static inline void arch_local_irq_enable(void)
  14. {
  15. asm volatile("psrset ee, ie\n":::"memory");
  16. }
  17. #define arch_local_irq_enable arch_local_irq_enable
  18. static inline void arch_local_irq_disable(void)
  19. {
  20. asm volatile("psrclr ie\n":::"memory");
  21. }
  22. #define arch_local_irq_disable arch_local_irq_disable
  23. static inline unsigned long arch_local_save_flags(void)
  24. {
  25. return mfcr("psr");
  26. }
  27. #define arch_local_save_flags arch_local_save_flags
  28. static inline void arch_local_irq_restore(unsigned long flags)
  29. {
  30. mtcr("psr", flags);
  31. }
  32. #define arch_local_irq_restore arch_local_irq_restore
  33. static inline int arch_irqs_disabled_flags(unsigned long flags)
  34. {
  35. return !(flags & (1<<6));
  36. }
  37. #define arch_irqs_disabled_flags arch_irqs_disabled_flags
  38. #include <asm-generic/irqflags.h>
  39. #endif /* __ASM_CSKY_IRQFLAGS_H */