Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/alpha/include/asm/irqflags.h
26481 views
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 */
69
70