| #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 */ |