Linux Audio

Check our new training course

Loading...
 1#ifndef __ALPHA_IRQFLAGS_H
 2#define __ALPHA_IRQFLAGS_H
 3
 4#include <asm/system.h>
 5
 6#define IPL_MIN		0
 7#define IPL_SW0		1
 8#define IPL_SW1		2
 9#define IPL_DEV0	3
10#define IPL_DEV1	4
11#define IPL_TIMER	5
12#define IPL_PERF	6
13#define IPL_POWERFAIL	6
14#define IPL_MCHECK	7
15#define IPL_MAX		7
16
17#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
18#undef IPL_MIN
19#define IPL_MIN		__min_ipl
20extern int __min_ipl;
21#endif
22
23#define getipl()		(rdps() & 7)
24#define setipl(ipl)		((void) swpipl(ipl))
25
26static inline unsigned long arch_local_save_flags(void)
27{
28	return rdps();
29}
30
31static inline void arch_local_irq_disable(void)
32{
33	setipl(IPL_MAX);
34	barrier();
35}
36
37static inline unsigned long arch_local_irq_save(void)
38{
39	unsigned long flags = swpipl(IPL_MAX);
40	barrier();
41	return flags;
42}
43
44static inline void arch_local_irq_enable(void)
45{
46	barrier();
47	setipl(IPL_MIN);
48}
49
50static inline void arch_local_irq_restore(unsigned long flags)
51{
52	barrier();
53	setipl(flags);
54	barrier();
55}
56
57static inline bool arch_irqs_disabled_flags(unsigned long flags)
58{
59	return flags == IPL_MAX;
60}
61
62static inline bool arch_irqs_disabled(void)
63{
64	return arch_irqs_disabled_flags(getipl());
65}
66
67#endif /* __ALPHA_IRQFLAGS_H */