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