Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
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 /* __ASM_CSKY_IRQFLAGS_H */