cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

irqflags.h (1194B)


      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 */