diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2011-06-26 21:35:13 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2011-06-26 21:35:13 +0000 |
commit | 251e4e266bf868c83af7b8c6355035f1b2f0425c (patch) | |
tree | f3287f9038d043aa4439fcb1a97d3923455c59cf /sys | |
parent | ce0d04db24acb72b49f032b8d1fc1365bc49e6e4 (diff) |
In the shared interrupt handler, return the pil and ci_handled_intr_level
to the level they were at before we started splraise'ing for the various
handlers.
with jsing, ok kettenis
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sparc64/sparc64/intr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/sparc64/sparc64/intr.c b/sys/arch/sparc64/sparc64/intr.c index 93ae040d882..e7f2e8bd588 100644 --- a/sys/arch/sparc64/sparc64/intr.c +++ b/sys/arch/sparc64/sparc64/intr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: intr.c,v 1.40 2011/06/24 19:08:46 kettenis Exp $ */ +/* $OpenBSD: intr.c,v 1.41 2011/06/26 21:35:12 deraadt Exp $ */ /* $NetBSD: intr.c,v 1.39 2001/07/19 23:38:11 eeh Exp $ */ /* @@ -131,7 +131,7 @@ intr_list_handler(void *arg) { struct cpu_info *ci = curcpu(); struct intrhand *ih = arg; - int claimed = 0; + int claimed = 0, ipl = ci->ci_handled_intr_level; while (ih) { sparc_wrpr(pil, ih->ih_pil, 0); @@ -144,6 +144,8 @@ intr_list_handler(void *arg) ih = ih->ih_next; } + sparc_wrpr(pil, ipl, 0); + ci->ci_handled_intr_level = ipl; return (claimed); } |