1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #ifndef __ALPHA_IRQFLAGS_H
- #define __ALPHA_IRQFLAGS_H
- #include <asm/pal.h>
- #define IPL_MIN 0
- #define IPL_SW0 1
- #define IPL_SW1 2
- #define IPL_DEV0 3
- #define IPL_DEV1 4
- #define IPL_TIMER 5
- #define IPL_PERF 6
- #define IPL_POWERFAIL 6
- #define IPL_MCHECK 7
- #define IPL_MAX 7
- #ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
- #undef IPL_MIN
- #define IPL_MIN __min_ipl
- extern int __min_ipl;
- #endif
- #define getipl() (rdps() & 7)
- #define setipl(ipl) ((void) swpipl(ipl))
- static inline unsigned long arch_local_save_flags(void)
- {
- return rdps();
- }
- static inline void arch_local_irq_disable(void)
- {
- setipl(IPL_MAX);
- barrier();
- }
- static inline unsigned long arch_local_irq_save(void)
- {
- unsigned long flags = swpipl(IPL_MAX);
- barrier();
- return flags;
- }
- static inline void arch_local_irq_enable(void)
- {
- barrier();
- setipl(IPL_MIN);
- }
- static inline void arch_local_irq_restore(unsigned long flags)
- {
- barrier();
- setipl(flags);
- barrier();
- }
- static inline bool arch_irqs_disabled_flags(unsigned long flags)
- {
- return flags == IPL_MAX;
- }
- static inline bool arch_irqs_disabled(void)
- {
- return arch_irqs_disabled_flags(getipl());
- }
- #endif /* __ALPHA_IRQFLAGS_H */
|