summaryrefslogtreecommitdiff
path: root/sys/src/9/pc64
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-02-20 18:43:32 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-02-20 18:43:32 +0100
commitc6069e28ac0e5a66000f0a887367d7c68410e253 (patch)
treed4010ad4910188528cd51b31e2bea3a3b1b1603c /sys/src/9/pc64
parent173bafd8007ed844eb59ae5882427b0a5a5b98a9 (diff)
pc, pc64: simplify intrdisable()
Diffstat (limited to 'sys/src/9/pc64')
-rw-r--r--sys/src/9/pc64/trap.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/sys/src/9/pc64/trap.c b/sys/src/9/pc64/trap.c
index 77046b7d8..c26f9ebf3 100644
--- a/sys/src/9/pc64/trap.c
+++ b/sys/src/9/pc64/trap.c
@@ -96,7 +96,7 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
vno = arch->intrvecno(irq);
}
ilock(&vctllock);
- for(; vno <= MaxVectorAPIC; vno++){
+ do {
for(pv = &vctl[vno]; (v = *pv) != nil; pv = &v->next){
if(v->isintr && (v->irq == irq || irq == -1)
&& v->tbdf == tbdf && v->f == f && v->a == a
@@ -107,14 +107,11 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
*pv = v->next;
xfree(v);
- if(irq == -1)
- break;
- if(vctl[vno] == nil && arch->intrdisable != nil)
+ if(irq != -1 && vctl[vno] == nil && arch->intrdisable != nil)
arch->intrdisable(irq);
- }
- if(irq != -1)
break;
- }
+ }
+ } while(irq == -1 && ++vno <= MaxVectorAPIC);
iunlock(&vctllock);
}