aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/include/asm/irqflags.h42
1 files changed, 21 insertions, 21 deletions
diff --git a/arch/blackfin/include/asm/irqflags.h b/arch/blackfin/include/asm/irqflags.h
index b4bbb75a9e15..43eb4749de3d 100644
--- a/arch/blackfin/include/asm/irqflags.h
+++ b/arch/blackfin/include/asm/irqflags.h
@@ -18,12 +18,12 @@
18extern unsigned long bfin_irq_flags; 18extern unsigned long bfin_irq_flags;
19#endif 19#endif
20 20
21static inline void bfin_sti(unsigned long flags) 21static inline notrace void bfin_sti(unsigned long flags)
22{ 22{
23 asm volatile("sti %0;" : : "d" (flags)); 23 asm volatile("sti %0;" : : "d" (flags));
24} 24}
25 25
26static inline unsigned long bfin_cli(void) 26static inline notrace unsigned long bfin_cli(void)
27{ 27{
28 unsigned long flags; 28 unsigned long flags;
29 asm volatile("cli %0;" : "=d" (flags)); 29 asm volatile("cli %0;" : "=d" (flags));
@@ -40,22 +40,22 @@ static inline unsigned long bfin_cli(void)
40/* 40/*
41 * Hard, untraced CPU interrupt flag manipulation and access. 41 * Hard, untraced CPU interrupt flag manipulation and access.
42 */ 42 */
43static inline void __hard_local_irq_disable(void) 43static inline notrace void __hard_local_irq_disable(void)
44{ 44{
45 bfin_cli(); 45 bfin_cli();
46} 46}
47 47
48static inline void __hard_local_irq_enable(void) 48static inline notrace void __hard_local_irq_enable(void)
49{ 49{
50 bfin_sti(bfin_irq_flags); 50 bfin_sti(bfin_irq_flags);
51} 51}
52 52
53static inline unsigned long hard_local_save_flags(void) 53static inline notrace unsigned long hard_local_save_flags(void)
54{ 54{
55 return bfin_read_IMASK(); 55 return bfin_read_IMASK();
56} 56}
57 57
58static inline unsigned long __hard_local_irq_save(void) 58static inline notrace unsigned long __hard_local_irq_save(void)
59{ 59{
60 unsigned long flags; 60 unsigned long flags;
61 flags = bfin_cli(); 61 flags = bfin_cli();
@@ -65,18 +65,18 @@ static inline unsigned long __hard_local_irq_save(void)
65 return flags; 65 return flags;
66} 66}
67 67
68static inline int hard_irqs_disabled_flags(unsigned long flags) 68static inline notrace int hard_irqs_disabled_flags(unsigned long flags)
69{ 69{
70 return (flags & ~0x3f) == 0; 70 return (flags & ~0x3f) == 0;
71} 71}
72 72
73static inline int hard_irqs_disabled(void) 73static inline notrace int hard_irqs_disabled(void)
74{ 74{
75 unsigned long flags = hard_local_save_flags(); 75 unsigned long flags = hard_local_save_flags();
76 return hard_irqs_disabled_flags(flags); 76 return hard_irqs_disabled_flags(flags);
77} 77}
78 78
79static inline void __hard_local_irq_restore(unsigned long flags) 79static inline notrace void __hard_local_irq_restore(unsigned long flags)
80{ 80{
81 if (!hard_irqs_disabled_flags(flags)) 81 if (!hard_irqs_disabled_flags(flags))
82 __hard_local_irq_enable(); 82 __hard_local_irq_enable();
@@ -113,31 +113,31 @@ void ipipe_check_context(struct ipipe_domain *ipd);
113/* 113/*
114 * Interrupt pipe interface to linux/irqflags.h. 114 * Interrupt pipe interface to linux/irqflags.h.
115 */ 115 */
116static inline void arch_local_irq_disable(void) 116static inline notrace void arch_local_irq_disable(void)
117{ 117{
118 __check_irqop_context(); 118 __check_irqop_context();
119 __ipipe_stall_root(); 119 __ipipe_stall_root();
120 barrier(); 120 barrier();
121} 121}
122 122
123static inline void arch_local_irq_enable(void) 123static inline notrace void arch_local_irq_enable(void)
124{ 124{
125 barrier(); 125 barrier();
126 __check_irqop_context(); 126 __check_irqop_context();
127 __ipipe_unstall_root(); 127 __ipipe_unstall_root();
128} 128}
129 129
130static inline unsigned long arch_local_save_flags(void) 130static inline notrace unsigned long arch_local_save_flags(void)
131{ 131{
132 return __ipipe_test_root() ? bfin_no_irqs : bfin_irq_flags; 132 return __ipipe_test_root() ? bfin_no_irqs : bfin_irq_flags;
133} 133}
134 134
135static inline int arch_irqs_disabled_flags(unsigned long flags) 135static inline notrace int arch_irqs_disabled_flags(unsigned long flags)
136{ 136{
137 return flags == bfin_no_irqs; 137 return flags == bfin_no_irqs;
138} 138}
139 139
140static inline unsigned long arch_local_irq_save(void) 140static inline notrace unsigned long arch_local_irq_save(void)
141{ 141{
142 unsigned long flags; 142 unsigned long flags;
143 143
@@ -148,13 +148,13 @@ static inline unsigned long arch_local_irq_save(void)
148 return flags; 148 return flags;
149} 149}
150 150
151static inline void arch_local_irq_restore(unsigned long flags) 151static inline notrace void arch_local_irq_restore(unsigned long flags)
152{ 152{
153 __check_irqop_context(); 153 __check_irqop_context();
154 __ipipe_restore_root(flags == bfin_no_irqs); 154 __ipipe_restore_root(flags == bfin_no_irqs);
155} 155}
156 156
157static inline unsigned long arch_mangle_irq_bits(int virt, unsigned long real) 157static inline notrace unsigned long arch_mangle_irq_bits(int virt, unsigned long real)
158{ 158{
159 /* 159 /*
160 * Merge virtual and real interrupt mask bits into a single 160 * Merge virtual and real interrupt mask bits into a single
@@ -163,7 +163,7 @@ static inline unsigned long arch_mangle_irq_bits(int virt, unsigned long real)
163 return (real & ~(1 << 31)) | ((virt != 0) << 31); 163 return (real & ~(1 << 31)) | ((virt != 0) << 31);
164} 164}
165 165
166static inline int arch_demangle_irq_bits(unsigned long *x) 166static inline notrace int arch_demangle_irq_bits(unsigned long *x)
167{ 167{
168 int virt = (*x & (1 << 31)) != 0; 168 int virt = (*x & (1 << 31)) != 0;
169 *x &= ~(1L << 31); 169 *x &= ~(1L << 31);
@@ -174,7 +174,7 @@ static inline int arch_demangle_irq_bits(unsigned long *x)
174 * Interface to various arch routines that may be traced. 174 * Interface to various arch routines that may be traced.
175 */ 175 */
176#ifdef CONFIG_IPIPE_TRACE_IRQSOFF 176#ifdef CONFIG_IPIPE_TRACE_IRQSOFF
177static inline void hard_local_irq_disable(void) 177static inline notrace void hard_local_irq_disable(void)
178{ 178{
179 if (!hard_irqs_disabled()) { 179 if (!hard_irqs_disabled()) {
180 __hard_local_irq_disable(); 180 __hard_local_irq_disable();
@@ -182,7 +182,7 @@ static inline void hard_local_irq_disable(void)
182 } 182 }
183} 183}
184 184
185static inline void hard_local_irq_enable(void) 185static inline notrace void hard_local_irq_enable(void)
186{ 186{
187 if (hard_irqs_disabled()) { 187 if (hard_irqs_disabled()) {
188 ipipe_trace_end(0x80000000); 188 ipipe_trace_end(0x80000000);
@@ -190,7 +190,7 @@ static inline void hard_local_irq_enable(void)
190 } 190 }
191} 191}
192 192
193static inline unsigned long hard_local_irq_save(void) 193static inline notrace unsigned long hard_local_irq_save(void)
194{ 194{
195 unsigned long flags = hard_local_save_flags(); 195 unsigned long flags = hard_local_save_flags();
196 if (!hard_irqs_disabled_flags(flags)) { 196 if (!hard_irqs_disabled_flags(flags)) {
@@ -200,7 +200,7 @@ static inline unsigned long hard_local_irq_save(void)
200 return flags; 200 return flags;
201} 201}
202 202
203static inline void hard_local_irq_restore(unsigned long flags) 203static inline notrace void hard_local_irq_restore(unsigned long flags)
204{ 204{
205 if (!hard_irqs_disabled_flags(flags)) { 205 if (!hard_irqs_disabled_flags(flags)) {
206 ipipe_trace_end(0x80000001); 206 ipipe_trace_end(0x80000001);