Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162675
b: refs/heads/master
c: 6b8019c
h: refs/heads/master
i:
  162673: 1fb7c81
  162671: 21c6c68
v: v3
  • Loading branch information
Philippe Gerum authored and Mike Frysinger committed Sep 17, 2009
1 parent eb91f02 commit 9a5f377
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bc569f1a77199926be97ba6266dbea27768264df
refs/heads/master: 6b8019c85e18295466095a5778a14c1e9a067554
24 changes: 22 additions & 2 deletions trunk/arch/blackfin/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,28 @@

ENTRY(_ret_from_fork)
#ifdef CONFIG_IPIPE
[--sp] = reti; /* IRQs on. */
SP += 4;
/*
* Hw IRQs are off on entry, and we don't want the scheduling tail
* code to starve high priority domains from interrupts while it
* runs. Therefore we first stall the root stage to have the
* virtual interrupt state reflect IMASK.
*/
p0.l = ___ipipe_root_status;
p0.h = ___ipipe_root_status;
r4 = [p0];
bitset(r4, 0);
[p0] = r4;
/*
* Then we may enable hw IRQs, allowing preemption from high
* priority domains. schedule_tail() will do local_irq_enable()
* since Blackfin does not define __ARCH_WANT_UNLOCKED_CTXSW, so
* there is no need to unstall the root domain by ourselves
* afterwards.
*/
p0.l = _bfin_irq_flags;
p0.h = _bfin_irq_flags;
r4 = [p0];
sti r4;
#endif /* CONFIG_IPIPE */
SP += -12;
call _schedule_tail;
Expand Down

0 comments on commit 9a5f377

Please sign in to comment.