diff options
Diffstat (limited to 'sys/arch/alpha/pci')
-rw-r--r-- | sys/arch/alpha/pci/pci_kn20aa.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/arch/alpha/pci/pci_kn20aa.c b/sys/arch/alpha/pci/pci_kn20aa.c index 3a3f2531f9a..2d40214955c 100644 --- a/sys/arch/alpha/pci/pci_kn20aa.c +++ b/sys/arch/alpha/pci/pci_kn20aa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_kn20aa.c,v 1.13 2001/08/17 22:26:58 mickey Exp $ */ +/* $OpenBSD: pci_kn20aa.c,v 1.14 2001/09/29 07:14:35 mickey Exp $ */ /* $NetBSD: pci_kn20aa.c,v 1.21 1996/11/17 02:05:27 cgd Exp $ */ /* @@ -226,7 +226,21 @@ void dec_kn20aa_intr_disestablish(ccv, cookie) void *ccv, *cookie; { - panic("dec_kn20aa_intr_disestablish not implemented"); /* XXX */ + struct alpha_shared_intrhand *ih = cookie; + unsigned int irq = ih->ih_num; + int s; + + s = splhigh(); + + alpha_shared_intr_disestablish(kn20aa_pci_intr, cookie, + "kn20aa irq"); + if (alpha_shared_intr_isactive(kn20aa_pci_intr, irq) == 0) { + kn20aa_disable_intr(irq); + alpha_shared_intr_set_dfltsharetype(kn20aa_pci_intr, irq, + IST_NONE); + /* scb_free(0x900 + SCB_IDXTOVEC(irq)); */ + } + splx(s); } void |