73 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #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 */
 |