123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #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 RAW_IRQ_DISABLED
- #define RAW_IRQ_DISABLED 0
- #define RAW_IRQ_ENABLED 1
- #endif
- /* read interrupt enabled status */
- #ifndef __raw_local_save_flags
- unsigned long __raw_local_save_flags(void);
- #endif
- /* set interrupt enabled status */
- #ifndef raw_local_irq_restore
- void raw_local_irq_restore(unsigned long flags);
- #endif
- /* get status and disable interrupts */
- #ifndef __raw_local_irq_save
- static inline unsigned long __raw_local_irq_save(void)
- {
- unsigned long flags;
- flags = __raw_local_save_flags();
- raw_local_irq_restore(RAW_IRQ_DISABLED);
- return flags;
- }
- #endif
- /* test flags */
- #ifndef raw_irqs_disabled_flags
- static inline int raw_irqs_disabled_flags(unsigned long flags)
- {
- return flags == RAW_IRQ_DISABLED;
- }
- #endif
- /* unconditionally enable interrupts */
- #ifndef raw_local_irq_enable
- static inline void raw_local_irq_enable(void)
- {
- raw_local_irq_restore(RAW_IRQ_ENABLED);
- }
- #endif
- /* unconditionally disable interrupts */
- #ifndef raw_local_irq_disable
- static inline void raw_local_irq_disable(void)
- {
- raw_local_irq_restore(RAW_IRQ_DISABLED);
- }
- #endif
- /* test hardware interrupt enable bit */
- #ifndef raw_irqs_disabled
- static inline int raw_irqs_disabled(void)
- {
- return raw_irqs_disabled_flags(__raw_local_save_flags());
- }
- #endif
- #define raw_local_save_flags(flags) \
- do { (flags) = __raw_local_save_flags(); } while (0)
- #define raw_local_irq_save(flags) \
- do { (flags) = __raw_local_irq_save(); } while (0)
- #endif /* __ASM_GENERIC_IRQFLAGS_H */
|