Warning: That file was not part of the compilation database. It may have many parsing errors.
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 |
Warning: That file was not part of the compilation database. It may have many parsing errors.