irqflags.h (1194B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __ALPHA_IRQFLAGS_H 3#define __ALPHA_IRQFLAGS_H 4 5#include <asm/pal.h> 6 7#define IPL_MIN 0 8#define IPL_SW0 1 9#define IPL_SW1 2 10#define IPL_DEV0 3 11#define IPL_DEV1 4 12#define IPL_TIMER 5 13#define IPL_PERF 6 14#define IPL_POWERFAIL 6 15#define IPL_MCHECK 7 16#define IPL_MAX 7 17 18#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK 19#undef IPL_MIN 20#define IPL_MIN __min_ipl 21extern int __min_ipl; 22#endif 23 24#define getipl() (rdps() & 7) 25#define setipl(ipl) ((void) swpipl(ipl)) 26 27static inline unsigned long arch_local_save_flags(void) 28{ 29 return rdps(); 30} 31 32static inline void arch_local_irq_disable(void) 33{ 34 setipl(IPL_MAX); 35 barrier(); 36} 37 38static inline unsigned long arch_local_irq_save(void) 39{ 40 unsigned long flags = swpipl(IPL_MAX); 41 barrier(); 42 return flags; 43} 44 45static inline void arch_local_irq_enable(void) 46{ 47 barrier(); 48 setipl(IPL_MIN); 49} 50 51static inline void arch_local_irq_restore(unsigned long flags) 52{ 53 barrier(); 54 setipl(flags); 55 barrier(); 56} 57 58static inline bool arch_irqs_disabled_flags(unsigned long flags) 59{ 60 return flags == IPL_MAX; 61} 62 63static inline bool arch_irqs_disabled(void) 64{ 65 return arch_irqs_disabled_flags(getipl()); 66} 67 68#endif /* __ALPHA_IRQFLAGS_H */