|  | /* | 
|  | * include/asm-sparc/irqflags.h | 
|  | * | 
|  | * IRQ flags handling | 
|  | * | 
|  | * This file gets included from lowlevel asm headers too, to provide | 
|  | * wrapped versions of the local_irq_*() APIs, based on the | 
|  | * raw_local_irq_*() functions from the lowlevel headers. | 
|  | */ | 
|  | #ifndef _ASM_IRQFLAGS_H | 
|  | #define _ASM_IRQFLAGS_H | 
|  |  | 
|  | #ifndef __ASSEMBLY__ | 
|  |  | 
|  | extern void raw_local_irq_restore(unsigned long); | 
|  | extern unsigned long __raw_local_irq_save(void); | 
|  | extern void raw_local_irq_enable(void); | 
|  |  | 
|  | static inline unsigned long getipl(void) | 
|  | { | 
|  | unsigned long retval; | 
|  |  | 
|  | __asm__ __volatile__("rd        %%psr, %0" : "=r" (retval)); | 
|  | return retval; | 
|  | } | 
|  |  | 
|  | #define raw_local_save_flags(flags) ((flags) = getipl()) | 
|  | #define raw_local_irq_save(flags)   ((flags) = __raw_local_irq_save()) | 
|  | #define raw_local_irq_disable()     ((void) __raw_local_irq_save()) | 
|  | #define raw_irqs_disabled()         ((getipl() & PSR_PIL) != 0) | 
|  |  | 
|  | static inline int raw_irqs_disabled_flags(unsigned long flags) | 
|  | { | 
|  | return ((flags & PSR_PIL) != 0); | 
|  | } | 
|  |  | 
|  | #endif /* (__ASSEMBLY__) */ | 
|  |  | 
|  | #endif /* !(_ASM_IRQFLAGS_H) */ |