12966Swollman/* SPDX-License-Identifier: GPL-2.0 */ 250477Speter 31590Srgrimes#ifndef __ASM_CSKY_IRQFLAGS_H 4156813Sru#define __ASM_CSKY_IRQFLAGS_H 5156813Sru#include <abi/reg_ops.h> 64699Sjkh 734706Sbdestatic inline unsigned long arch_local_irq_save(void) 897128Sjmallett{ 91930Swollman unsigned long flags; 101930Swollman 11106717Smarcel flags = mfcr("psr"); 12100200Swollman asm volatile("psrclr ie\n":::"memory"); 13100200Swollman return flags; 14176457Sru} 1596630Stjr#define arch_local_irq_save arch_local_irq_save 16183242Ssam 17121666Shartistatic inline void arch_local_irq_enable(void) 1891706Sobrien{ 1938653Sgpalmer asm volatile("psrset ee, ie\n":::"memory"); 2038653Sgpalmer} 21183242Ssam#define arch_local_irq_enable arch_local_irq_enable 22124587Sru 2357013Sobrienstatic inline void arch_local_irq_disable(void) 24148771Scperciva{ 2578562Sobrien asm volatile("psrclr ie\n":::"memory"); 26108667Sobrien} 27119553Sphk#define arch_local_irq_disable arch_local_irq_disable 28119553Sphk 29148677Sphkstatic inline unsigned long arch_local_save_flags(void) 3038653Sgpalmer{ 31148741Sphk return mfcr("psr"); 3238653Sgpalmer} 33183242Ssam#define arch_local_save_flags arch_local_save_flags 34124587Sru 3538653Sgpalmerstatic inline void arch_local_irq_restore(unsigned long flags) 3638653Sgpalmer{ 3738653Sgpalmer mtcr("psr", flags); 3838653Sgpalmer} 39183242Ssam#define arch_local_irq_restore arch_local_irq_restore 4038653Sgpalmer 4138653Sgpalmerstatic inline int arch_irqs_disabled_flags(unsigned long flags) 4238653Sgpalmer{ 4338653Sgpalmer return !(flags & (1<<6)); 44183242Ssam} 4538653Sgpalmer#define arch_irqs_disabled_flags arch_irqs_disabled_flags 46179813Sdougb 47176733Sjeff#include <asm-generic/irqflags.h> 4895926Stjr 49156256Smux#endif /* __ASM_CSKY_IRQFLAGS_H */ 50183242Ssam