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