From 7624a188d3653ee18f612869c6a06efdc3eaa336 Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Sun, 17 Jun 2007 10:01:26 +0000 Subject: Some alpha (or SRM) designs use level 3 for i/o interrupts, instead of the more commonly encountered level 4. Do not complain in splassert() in this case (this is similar to the older vsbus vax machines workaround). --- sys/arch/alpha/alpha/interrupt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'sys') diff --git a/sys/arch/alpha/alpha/interrupt.c b/sys/arch/alpha/alpha/interrupt.c index 01901d76a27..80422a8ccd6 100644 --- a/sys/arch/alpha/alpha/interrupt.c +++ b/sys/arch/alpha/alpha/interrupt.c @@ -1,4 +1,4 @@ -/* $OpenBSD: interrupt.c,v 1.23 2007/05/29 18:10:41 miod Exp $ */ +/* $OpenBSD: interrupt.c,v 1.24 2007/06/17 10:01:25 miod Exp $ */ /* $NetBSD: interrupt.c,v 1.46 2000/06/03 20:47:36 thorpej Exp $ */ /*- @@ -675,6 +675,13 @@ splassert_check(int wantipl, const char *func) if (wantipl < 0) wantipl = IPL_SOFTINT; + /* + * Depending on the system, hardware interrupts may occur either + * at level 3 or level 4. Avoid false positives in the former case. + */ + if (curipl == ALPHA_PSL_IPL_IO - 1) + curipl = ALPHA_PSL_IPL_IO; + if (curipl < wantipl) { splassert_fail(wantipl, curipl, func); /* -- cgit v1.2.3