| Robert Reif | e8dd161 | 2007-09-27 13:15:31 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * include/asm-sparc/irqflags.h | 
 | 3 |  * | 
 | 4 |  * IRQ flags handling | 
 | 5 |  * | 
 | 6 |  * This file gets included from lowlevel asm headers too, to provide | 
 | 7 |  * wrapped versions of the local_irq_*() APIs, based on the | 
 | 8 |  * raw_local_irq_*() functions from the lowlevel headers. | 
 | 9 |  */ | 
 | 10 | #ifndef _ASM_IRQFLAGS_H | 
 | 11 | #define _ASM_IRQFLAGS_H | 
 | 12 |  | 
 | 13 | #ifndef __ASSEMBLY__ | 
 | 14 |  | 
 | 15 | extern void raw_local_irq_restore(unsigned long); | 
 | 16 | extern unsigned long __raw_local_irq_save(void); | 
 | 17 | extern void raw_local_irq_enable(void); | 
 | 18 |  | 
 | 19 | static inline unsigned long getipl(void) | 
 | 20 | { | 
 | 21 |         unsigned long retval; | 
 | 22 |  | 
 | 23 |         __asm__ __volatile__("rd        %%psr, %0" : "=r" (retval)); | 
 | 24 |         return retval; | 
 | 25 | } | 
 | 26 |  | 
 | 27 | #define raw_local_save_flags(flags) ((flags) = getipl()) | 
 | 28 | #define raw_local_irq_save(flags)   ((flags) = __raw_local_irq_save()) | 
 | 29 | #define raw_local_irq_disable()     ((void) __raw_local_irq_save()) | 
 | 30 | #define raw_irqs_disabled()         ((getipl() & PSR_PIL) != 0) | 
 | 31 |  | 
 | 32 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 
 | 33 | { | 
 | 34 |         return ((flags & PSR_PIL) != 0); | 
 | 35 | } | 
 | 36 |  | 
 | 37 | #endif /* (__ASSEMBLY__) */ | 
 | 38 |  | 
 | 39 | #endif /* !(_ASM_IRQFLAGS_H) */ |