Processing pending interrupts before reenabling external interrupts in splx().
This commit is contained in:
parent
eddc639fec
commit
a7d9bc4bf3
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: iq80310_intr.c,v 1.9 2002/02/09 03:52:31 thorpej Exp $ */
|
/* $NetBSD: iq80310_intr.c,v 1.10 2002/04/12 04:52:57 briggs Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2002 Wasabi Systems, Inc.
|
* Copyright (c) 2001, 2002 Wasabi Systems, Inc.
|
||||||
|
@ -324,6 +324,10 @@ splx(int new)
|
||||||
old = current_spl_level;
|
old = current_spl_level;
|
||||||
current_spl_level = new;
|
current_spl_level = new;
|
||||||
|
|
||||||
|
/* If there are software interrupts to process, do it. */
|
||||||
|
if ((ipending & ~IRQ_BITS) & ~new)
|
||||||
|
iq80310_do_pending();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there are pending hardware interrupts (i.e. the
|
* If there are pending hardware interrupts (i.e. the
|
||||||
* external interrupt is disabled in the ICU), and all
|
* external interrupt is disabled in the ICU), and all
|
||||||
|
@ -336,10 +340,6 @@ splx(int new)
|
||||||
*/
|
*/
|
||||||
if ((new & IRQ_BITS) == 0 && (ipending & IRQ_BITS))
|
if ((new & IRQ_BITS) == 0 && (ipending & IRQ_BITS))
|
||||||
i80200_intr_enable(INTCTL_IM);
|
i80200_intr_enable(INTCTL_IM);
|
||||||
|
|
||||||
/* If there are software interrupts to process, do it. */
|
|
||||||
if ((ipending & ~IRQ_BITS) & ~new)
|
|
||||||
iq80310_do_pending();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue