/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
#ifndef __ALPHA_IRQFLAGS_H 
 | 
#define __ALPHA_IRQFLAGS_H 
 | 
  
 | 
#include <asm/pal.h> 
 | 
  
 | 
#define IPL_MIN        0 
 | 
#define IPL_SW0        1 
 | 
#define IPL_SW1        2 
 | 
#define IPL_DEV0    3 
 | 
#define IPL_DEV1    4 
 | 
#define IPL_TIMER    5 
 | 
#define IPL_PERF    6 
 | 
#define IPL_POWERFAIL    6 
 | 
#define IPL_MCHECK    7 
 | 
#define IPL_MAX        7 
 | 
  
 | 
#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK 
 | 
#undef IPL_MIN 
 | 
#define IPL_MIN        __min_ipl 
 | 
extern int __min_ipl; 
 | 
#endif 
 | 
  
 | 
#define getipl()        (rdps() & 7) 
 | 
#define setipl(ipl)        ((void) swpipl(ipl)) 
 | 
  
 | 
static inline unsigned long arch_local_save_flags(void) 
 | 
{ 
 | 
    return rdps(); 
 | 
} 
 | 
  
 | 
static inline void arch_local_irq_disable(void) 
 | 
{ 
 | 
    setipl(IPL_MAX); 
 | 
    barrier(); 
 | 
} 
 | 
  
 | 
static inline unsigned long arch_local_irq_save(void) 
 | 
{ 
 | 
    unsigned long flags = swpipl(IPL_MAX); 
 | 
    barrier(); 
 | 
    return flags; 
 | 
} 
 | 
  
 | 
static inline void arch_local_irq_enable(void) 
 | 
{ 
 | 
    barrier(); 
 | 
    setipl(IPL_MIN); 
 | 
} 
 | 
  
 | 
static inline void arch_local_irq_restore(unsigned long flags) 
 | 
{ 
 | 
    barrier(); 
 | 
    setipl(flags); 
 | 
    barrier(); 
 | 
} 
 | 
  
 | 
static inline bool arch_irqs_disabled_flags(unsigned long flags) 
 | 
{ 
 | 
    return flags == IPL_MAX; 
 | 
} 
 | 
  
 | 
static inline bool arch_irqs_disabled(void) 
 | 
{ 
 | 
    return arch_irqs_disabled_flags(getipl()); 
 | 
} 
 | 
  
 | 
#endif /* __ALPHA_IRQFLAGS_H */ 
 |