summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64/dev/psycho.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2008-07-12 10:07:26 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2008-07-12 10:07:26 +0000
commita00fd275b6a3c282b6542a2a814a7452cb375be6 (patch)
tree5c89f4dbf2bb39e77a08344e8a2e930ae94419b3 /sys/arch/sparc64/dev/psycho.c
parentb0a9097a87d9a9961f57e12298c98aafb2a05db3 (diff)
Don't install interrupt handlers for non-exitsing interrupts on CMU-CH.
Diffstat (limited to 'sys/arch/sparc64/dev/psycho.c')
-rw-r--r--sys/arch/sparc64/dev/psycho.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/sys/arch/sparc64/dev/psycho.c b/sys/arch/sparc64/dev/psycho.c
index 6bc9623668b..42baeb77e5e 100644
--- a/sys/arch/sparc64/dev/psycho.c
+++ b/sys/arch/sparc64/dev/psycho.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: psycho.c,v 1.59 2008/06/02 19:39:08 kettenis Exp $ */
+/* $OpenBSD: psycho.c,v 1.60 2008/07/12 10:07:25 kettenis Exp $ */
/* $NetBSD: psycho.c,v 1.39 2001/10/07 20:30:41 eeh Exp $ */
/*
@@ -416,12 +416,16 @@ psycho_attach(struct device *parent, struct device *self, void *aux)
psycho_set_intr(sc, 15, psycho_ue,
psycho_psychoreg_vaddr(sc, ue_int_map),
psycho_psychoreg_vaddr(sc, ue_clr_int), "ue");
- psycho_set_intr(sc, 1, psycho_ce,
- psycho_psychoreg_vaddr(sc, ce_int_map),
- psycho_psychoreg_vaddr(sc, ce_clr_int), "ce");
- psycho_set_intr(sc, 15, psycho_bus_a,
- psycho_psychoreg_vaddr(sc, pciaerr_int_map),
- psycho_psychoreg_vaddr(sc, pciaerr_clr_int), "bus_a");
+ if (sc->sc_mode == PSYCHO_MODE_PSYCHO ||
+ sc->sc_mode == PSYCHO_MODE_SABRE) {
+ psycho_set_intr(sc, 1, psycho_ce,
+ psycho_psychoreg_vaddr(sc, ce_int_map),
+ psycho_psychoreg_vaddr(sc, ce_clr_int), "ce");
+ psycho_set_intr(sc, 15, psycho_bus_a,
+ psycho_psychoreg_vaddr(sc, pciaerr_int_map),
+ psycho_psychoreg_vaddr(sc, pciaerr_clr_int),
+ "bus_a");
+ }
#if 0
psycho_set_intr(sc, 15, psycho_powerfail,
psycho_psychoreg_vaddr(sc, power_int_map),
@@ -433,6 +437,8 @@ psycho_attach(struct device *parent, struct device *self, void *aux)
psycho_psychoreg_vaddr(sc, pciberr_int_map),
psycho_psychoreg_vaddr(sc, pciberr_clr_int),
"bus_b");
+ }
+ if (sc->sc_mode == PSYCHO_MODE_PSYCHO) {
psycho_set_intr(sc, 1, psycho_wakeup,
psycho_psychoreg_vaddr(sc, pwrmgt_int_map),
psycho_psychoreg_vaddr(sc, pwrmgt_clr_int),