#ifndef __ASM_GENERIC_IRQFLAGS_H #define __ASM_GENERIC_IRQFLAGS_H /* * All architectures should implement at least the first two functions, * usually inline assembly will be the best way. */ #ifndef ARCH_IRQ_DISABLED #define ARCH_IRQ_DISABLED 0 #define ARCH_IRQ_ENABLED 1 #endif /* read interrupt enabled status */ #ifndef arch_local_save_flags unsigned long arch_local_save_flags(void); #endif /* set interrupt enabled status */ #ifndef arch_local_irq_restore void arch_local_irq_restore(unsigned long flags); #endif /* get status and disable interrupts */ #ifndef arch_local_irq_save static inline unsigned long arch_local_irq_save(void) { unsigned long flags; flags = arch_local_save_flags(); arch_local_irq_restore(ARCH_IRQ_DISABLED); return flags; } #endif /* test flags */ #ifndef arch_irqs_disabled_flags static inline int arch_irqs_disabled_flags(unsigned long flags) { return flags == ARCH_IRQ_DISABLED; } #endif /* unconditionally enable interrupts */ #ifndef arch_local_irq_enable static inline void arch_local_irq_enable(void) { arch_local_irq_restore(ARCH_IRQ_ENABLED); } #endif /* unconditionally disable interrupts */ #ifndef arch_local_irq_disable static inline void arch_local_irq_disable(void) { arch_local_irq_restore(ARCH_IRQ_DISABLED); } #endif /* test hardware interrupt enable bit */ #ifndef arch_irqs_disabled static inline int arch_irqs_disabled(void) { return arch_irqs_disabled_flags(arch_local_save_flags()); } #endif #endif /* __ASM_GENERIC_IRQFLAGS_H */