irqflags.h 738 B

123456789101112131415161718192021222324252627282930313233343536
  1. // SPDX-License-Identifier: GPL-2.0
  2. // Copyright (C) 2005-2017 Andes Technology Corporation
  3. #include <asm/nds32.h>
  4. #include <nds32_intrinsic.h>
  5. #define arch_local_irq_disable() \
  6. GIE_DISABLE();
  7. #define arch_local_irq_enable() \
  8. GIE_ENABLE();
  9. static inline unsigned long arch_local_irq_save(void)
  10. {
  11. unsigned long flags;
  12. flags = __nds32__mfsr(NDS32_SR_PSW) & PSW_mskGIE;
  13. GIE_DISABLE();
  14. return flags;
  15. }
  16. static inline unsigned long arch_local_save_flags(void)
  17. {
  18. unsigned long flags;
  19. flags = __nds32__mfsr(NDS32_SR_PSW) & PSW_mskGIE;
  20. return flags;
  21. }
  22. static inline void arch_local_irq_restore(unsigned long flags)
  23. {
  24. if(flags)
  25. GIE_ENABLE();
  26. }
  27. static inline int arch_irqs_disabled_flags(unsigned long flags)
  28. {
  29. return !flags;
  30. }