Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162679
b: refs/heads/master
c: 7a7967d
h: refs/heads/master
i:
  162677: 497ad86
  162675: 9a5f377
  162671: 21c6c68
v: v3
  • Loading branch information
Philippe Gerum authored and Mike Frysinger committed Sep 17, 2009
1 parent e264384 commit 19f8b26
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 70f47202320623270f327e249df0121c09e45c09
refs/heads/master: 7a7967dc1b606f8c88e33bbec773bf82b4a52e6e
25 changes: 25 additions & 0 deletions trunk/arch/blackfin/mach-common/interrupt.S
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,31 @@ ENTRY(_evt_system_call)
ENDPROC(_evt_system_call)

#ifdef CONFIG_IPIPE
/*
* __ipipe_call_irqtail: lowers the current priority level to EVT15
* before running a user-defined routine, then raises the priority
* level to EVT14 to prepare the caller for a normal interrupt
* return through RTI.
*
* We currently use this facility in two occasions:
*
* - to branch to __ipipe_irq_tail_hook as requested by a high
* priority domain after the pipeline delivered an interrupt,
* e.g. such as Xenomai, in order to start its rescheduling
* procedure, since we may not switch tasks when IRQ levels are
* nested on the Blackfin, so we have to fake an interrupt return
* so that we may reschedule immediately.
*
* - to branch to sync_root_irqs, in order to play any interrupt
* pending for the root domain (i.e. the Linux kernel). This lowers
* the core priority level enough so that Linux IRQ handlers may
* never delay interrupts handled by high priority domains; we defer
* those handlers until this point instead. This is a substitute
* to using a threaded interrupt model for the Linux kernel.
*
* r0: address of user-defined routine
* context: caller must have preempted EVT15, hw interrupts must be off.
*/
ENTRY(___ipipe_call_irqtail)
p0 = r0;
r0.l = 1f;
Expand Down

0 comments on commit 19f8b26

Please sign in to comment.