aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/kernel')
-rw-r--r--arch/blackfin/kernel/ipipe.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/arch/blackfin/kernel/ipipe.c b/arch/blackfin/kernel/ipipe.c
index a7256775fb98..be4f24ebd40c 100644
--- a/arch/blackfin/kernel/ipipe.c
+++ b/arch/blackfin/kernel/ipipe.c
@@ -191,30 +191,6 @@ void __ipipe_disable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
191} 191}
192EXPORT_SYMBOL(__ipipe_disable_irqdesc); 192EXPORT_SYMBOL(__ipipe_disable_irqdesc);
193 193
194void __ipipe_stall_root_raw(void)
195{
196 /*
197 * This code is called by the ins{bwl} routines (see
198 * arch/blackfin/lib/ins.S), which are heavily used by the
199 * network stack. It masks all interrupts but those handled by
200 * non-root domains, so that we keep decent network transfer
201 * rates for Linux without inducing pathological jitter for
202 * the real-time domain.
203 */
204 __asm__ __volatile__ ("sti %0;" : : "d"(__ipipe_irq_lvmask));
205
206 __set_bit(IPIPE_STALL_FLAG,
207 &ipipe_root_cpudom_var(status));
208}
209
210void __ipipe_unstall_root_raw(void)
211{
212 __clear_bit(IPIPE_STALL_FLAG,
213 &ipipe_root_cpudom_var(status));
214
215 __asm__ __volatile__ ("sti %0;" : : "d"(bfin_irq_flags));
216}
217
218int __ipipe_syscall_root(struct pt_regs *regs) 194int __ipipe_syscall_root(struct pt_regs *regs)
219{ 195{
220 struct ipipe_percpu_domain_data *p; 196 struct ipipe_percpu_domain_data *p;
@@ -344,3 +320,23 @@ void ___ipipe_sync_pipeline(unsigned long syncmask)
344 320
345 __ipipe_sync_stage(syncmask); 321 __ipipe_sync_stage(syncmask);
346} 322}
323
324void __ipipe_disable_root_irqs_hw(void)
325{
326 /*
327 * This code is called by the ins{bwl} routines (see
328 * arch/blackfin/lib/ins.S), which are heavily used by the
329 * network stack. It masks all interrupts but those handled by
330 * non-root domains, so that we keep decent network transfer
331 * rates for Linux without inducing pathological jitter for
332 * the real-time domain.
333 */
334 bfin_sti(__ipipe_irq_lvmask);
335 __set_bit(IPIPE_STALL_FLAG, &ipipe_root_cpudom_var(status));
336}
337
338void __ipipe_enable_root_irqs_hw(void)
339{
340 __clear_bit(IPIPE_STALL_FLAG, &ipipe_root_cpudom_var(status));
341 bfin_sti(bfin_irq_flags);
342}