0001
0002
0003 #ifndef __ASM_CSKY_IRQFLAGS_H
0004 #define __ASM_CSKY_IRQFLAGS_H
0005 #include <abi/reg_ops.h>
0006
0007 static inline unsigned long arch_local_irq_save(void)
0008 {
0009 unsigned long flags;
0010
0011 flags = mfcr("psr");
0012 asm volatile("psrclr ie\n":::"memory");
0013 return flags;
0014 }
0015 #define arch_local_irq_save arch_local_irq_save
0016
0017 static inline void arch_local_irq_enable(void)
0018 {
0019 asm volatile("psrset ee, ie\n":::"memory");
0020 }
0021 #define arch_local_irq_enable arch_local_irq_enable
0022
0023 static inline void arch_local_irq_disable(void)
0024 {
0025 asm volatile("psrclr ie\n":::"memory");
0026 }
0027 #define arch_local_irq_disable arch_local_irq_disable
0028
0029 static inline unsigned long arch_local_save_flags(void)
0030 {
0031 return mfcr("psr");
0032 }
0033 #define arch_local_save_flags arch_local_save_flags
0034
0035 static inline void arch_local_irq_restore(unsigned long flags)
0036 {
0037 mtcr("psr", flags);
0038 }
0039 #define arch_local_irq_restore arch_local_irq_restore
0040
0041 static inline int arch_irqs_disabled_flags(unsigned long flags)
0042 {
0043 return !(flags & (1<<6));
0044 }
0045 #define arch_irqs_disabled_flags arch_irqs_disabled_flags
0046
0047 #include <asm-generic/irqflags.h>
0048
0049 #endif