root/arch/alpha/include/asm/irqflags.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. arch_local_save_flags
  2. arch_local_irq_disable
  3. arch_local_irq_save
  4. arch_local_irq_enable
  5. arch_local_irq_restore
  6. arch_irqs_disabled_flags
  7. arch_irqs_disabled

   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
  21 extern int __min_ipl;
  22 #endif
  23 
  24 #define getipl()                (rdps() & 7)
  25 #define setipl(ipl)             ((void) swpipl(ipl))
  26 
  27 static inline unsigned long arch_local_save_flags(void)
  28 {
  29         return rdps();
  30 }
  31 
  32 static inline void arch_local_irq_disable(void)
  33 {
  34         setipl(IPL_MAX);
  35         barrier();
  36 }
  37 
  38 static inline unsigned long arch_local_irq_save(void)
  39 {
  40         unsigned long flags = swpipl(IPL_MAX);
  41         barrier();
  42         return flags;
  43 }
  44 
  45 static inline void arch_local_irq_enable(void)
  46 {
  47         barrier();
  48         setipl(IPL_MIN);
  49 }
  50 
  51 static inline void arch_local_irq_restore(unsigned long flags)
  52 {
  53         barrier();
  54         setipl(flags);
  55         barrier();
  56 }
  57 
  58 static inline bool arch_irqs_disabled_flags(unsigned long flags)
  59 {
  60         return flags == IPL_MAX;
  61 }
  62 
  63 static inline bool arch_irqs_disabled(void)
  64 {
  65         return arch_irqs_disabled_flags(getipl());
  66 }
  67 
  68 #endif /* __ALPHA_IRQFLAGS_H */

/* [<][>][^][v][top][bottom][index][help] */