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