Module Name: src Committed By: jmcneill Date: Mon Feb 15 15:42:58 UTC 2021
Modified Files: src/sys/arch/arm/pic: pic_splfuncs.c Log Message: splx: only dispatch hard interrupts if interrupts are enabled To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/pic/pic_splfuncs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/pic/pic_splfuncs.c diff -u src/sys/arch/arm/pic/pic_splfuncs.c:1.9 src/sys/arch/arm/pic/pic_splfuncs.c:1.10 --- src/sys/arch/arm/pic/pic_splfuncs.c:1.9 Mon Feb 15 15:07:47 2021 +++ src/sys/arch/arm/pic/pic_splfuncs.c Mon Feb 15 15:42:58 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pic_splfuncs.c,v 1.9 2021/02/15 15:07:47 jmcneill Exp $ */ +/* $NetBSD: pic_splfuncs.c,v 1.10 2021/02/15 15:42:58 jmcneill Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -28,7 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pic_splfuncs.c,v 1.9 2021/02/15 15:07:47 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pic_splfuncs.c,v 1.10 2021/02/15 15:42:58 jmcneill Exp $"); #define _INTR_PRIVATE #include <sys/param.h> @@ -90,15 +90,17 @@ splx(int savedipl) KASSERTMSG(panicstr != NULL || savedipl < ci->ci_cpl, "splx(%d) to a higher ipl than %d", savedipl, ci->ci_cpl); - ci->ci_intr_depth++; - pic_do_pending_ints(psw, savedipl, NULL); - ci->ci_intr_depth--; - KASSERTMSG(ci->ci_cpl == savedipl, "cpl %d savedipl %d", - ci->ci_cpl, savedipl); if ((psw & I32_bit) == 0) { + ci->ci_intr_depth++; + pic_do_pending_ints(psw, savedipl, NULL); + ci->ci_intr_depth--; + KASSERTMSG(ci->ci_cpl == savedipl, "cpl %d savedipl %d", + ci->ci_cpl, savedipl); + cpsie(I32_bit); cpu_dosoftints(); } + KASSERTMSG(ci->ci_cpl == savedipl, "cpl %d savedipl %d", ci->ci_cpl, savedipl); }