This source file includes following definitions.
- arch_local_save_flags
- arch_local_irq_restore
- arch_local_irq_disable
- arch_local_irq_enable
- arch_irqs_disabled_flags
- arch_irqs_disabled
- arch_local_irq_save
1
2
3
4
5
6
7
8
9
10
11 #ifndef _ASM_IRQFLAGS_H
12 #define _ASM_IRQFLAGS_H
13
14 #include <asm/pil.h>
15
16 #ifndef __ASSEMBLY__
17
18 static inline notrace unsigned long arch_local_save_flags(void)
19 {
20 unsigned long flags;
21
22 __asm__ __volatile__(
23 "rdpr %%pil, %0"
24 : "=r" (flags)
25 );
26
27 return flags;
28 }
29
30 static inline notrace void arch_local_irq_restore(unsigned long flags)
31 {
32 __asm__ __volatile__(
33 "wrpr %0, %%pil"
34 :
35 : "r" (flags)
36 : "memory"
37 );
38 }
39
40 static inline notrace void arch_local_irq_disable(void)
41 {
42 __asm__ __volatile__(
43 "wrpr %0, %%pil"
44 :
45 : "i" (PIL_NORMAL_MAX)
46 : "memory"
47 );
48 }
49
50 static inline notrace void arch_local_irq_enable(void)
51 {
52 __asm__ __volatile__(
53 "wrpr 0, %%pil"
54 :
55 :
56 : "memory"
57 );
58 }
59
60 static inline notrace int arch_irqs_disabled_flags(unsigned long flags)
61 {
62 return (flags > 0);
63 }
64
65 static inline notrace int arch_irqs_disabled(void)
66 {
67 return arch_irqs_disabled_flags(arch_local_save_flags());
68 }
69
70 static inline notrace unsigned long arch_local_irq_save(void)
71 {
72 unsigned long flags, tmp;
73
74
75
76
77
78
79
80
81
82
83
84 __asm__ __volatile__(
85 "rdpr %%pil, %0\n\t"
86 "or %0, %2, %1\n\t"
87 "wrpr %1, 0x0, %%pil"
88 : "=r" (flags), "=r" (tmp)
89 : "i" (PIL_NORMAL_MAX)
90 : "memory"
91 );
92
93 return flags;
94 }
95
96 #endif
97
98 #endif