1 #ifndef __ASM_GENERIC_IRQFLAGS_H
2 #define __ASM_GENERIC_IRQFLAGS_H
5 * All architectures should implement at least the first two functions,
6 * usually inline assembly will be the best way.
8 #ifndef ARCH_IRQ_DISABLED
9 #define ARCH_IRQ_DISABLED 0
10 #define ARCH_IRQ_ENABLED 1
13 /* read interrupt enabled status */
14 #ifndef arch_local_save_flags
15 unsigned long arch_local_save_flags(void);
18 /* set interrupt enabled status */
19 #ifndef arch_local_irq_restore
20 void arch_local_irq_restore(unsigned long flags
);
23 /* get status and disable interrupts */
24 #ifndef arch_local_irq_save
25 static inline unsigned long arch_local_irq_save(void)
28 flags
= arch_local_save_flags();
29 arch_local_irq_restore(ARCH_IRQ_DISABLED
);
35 #ifndef arch_irqs_disabled_flags
36 static inline int arch_irqs_disabled_flags(unsigned long flags
)
38 return flags
== ARCH_IRQ_DISABLED
;
42 /* unconditionally enable interrupts */
43 #ifndef arch_local_irq_enable
44 static inline void arch_local_irq_enable(void)
46 arch_local_irq_restore(ARCH_IRQ_ENABLED
);
50 /* unconditionally disable interrupts */
51 #ifndef arch_local_irq_disable
52 static inline void arch_local_irq_disable(void)
54 arch_local_irq_restore(ARCH_IRQ_DISABLED
);
58 /* test hardware interrupt enable bit */
59 #ifndef arch_irqs_disabled
60 static inline int arch_irqs_disabled(void)
62 return arch_irqs_disabled_flags(arch_local_save_flags());
66 #endif /* __ASM_GENERIC_IRQFLAGS_H */