linux/arch/alpha/include/asm/irqflags.h
<<
>>
Prefs
   1#ifndef __ALPHA_IRQFLAGS_H
   2#define __ALPHA_IRQFLAGS_H
   3
   4#include <asm/pal.h>
   5
   6#define IPL_MIN         0
   7#define IPL_SW0         1
   8#define IPL_SW1         2
   9#define IPL_DEV0        3
  10#define IPL_DEV1        4
  11#define IPL_TIMER       5
  12#define IPL_PERF        6
  13#define IPL_POWERFAIL   6
  14#define IPL_MCHECK      7
  15#define IPL_MAX         7
  16
  17#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
  18#undef IPL_MIN
  19#define IPL_MIN         __min_ipl
  20extern int __min_ipl;
  21#endif
  22
  23#define getipl()                (rdps() & 7)
  24#define setipl(ipl)             ((void) swpipl(ipl))
  25
  26static inline unsigned long arch_local_save_flags(void)
  27{
  28        return rdps();
  29}
  30
  31static inline void arch_local_irq_disable(void)
  32{
  33        setipl(IPL_MAX);
  34        barrier();
  35}
  36
  37static inline unsigned long arch_local_irq_save(void)
  38{
  39        unsigned long flags = swpipl(IPL_MAX);
  40        barrier();
  41        return flags;
  42}
  43
  44static inline void arch_local_irq_enable(void)
  45{
  46        barrier();
  47        setipl(IPL_MIN);
  48}
  49
  50static inline void arch_local_irq_restore(unsigned long flags)
  51{
  52        barrier();
  53        setipl(flags);
  54        barrier();
  55}
  56
  57static inline bool arch_irqs_disabled_flags(unsigned long flags)
  58{
  59        return flags == IPL_MAX;
  60}
  61
  62static inline bool arch_irqs_disabled(void)
  63{
  64        return arch_irqs_disabled_flags(getipl());
  65}
  66
  67#endif /* __ALPHA_IRQFLAGS_H */
  68