]> git.ipfire.org Git - thirdparty/linux.git/blame - arch/alpha/include/asm/irqflags.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[thirdparty/linux.git] / arch / alpha / include / asm / irqflags.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
df9ee292
DH
2#ifndef __ALPHA_IRQFLAGS_H
3#define __ALPHA_IRQFLAGS_H
4
ec221208 5#include <asm/pal.h>
df9ee292
DH
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 */