Module Name: src Committed By: matt Date: Mon Jul 9 11:40:19 UTC 2012
Modified Files: src/sys/arch/powerpc/booke: e500_intr.c Log Message: If we paniced because a watchdog timed out, PSL_CE will be clear. So don't assert PSL_CE is set if panicstr is not NULL. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/powerpc/booke/e500_intr.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/powerpc/booke/e500_intr.c diff -u src/sys/arch/powerpc/booke/e500_intr.c:1.17 src/sys/arch/powerpc/booke/e500_intr.c:1.18 --- src/sys/arch/powerpc/booke/e500_intr.c:1.17 Fri Jun 8 23:35:23 2012 +++ src/sys/arch/powerpc/booke/e500_intr.c Mon Jul 9 11:40:19 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: e500_intr.c,v 1.17 2012/06/08 23:35:23 matt Exp $ */ +/* $NetBSD: e500_intr.c,v 1.18 2012/07/09 11:40:19 matt Exp $ */ /*- * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -39,7 +39,7 @@ #define __INTR_PRIVATE #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: e500_intr.c,v 1.17 2012/06/08 23:35:23 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: e500_intr.c,v 1.18 2012/07/09 11:40:19 matt Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -491,7 +491,8 @@ e500_splx(int ipl) struct cpu_info * const ci = curcpu(); const int old_ipl = ci->ci_cpl; - KASSERT(mfmsr() & PSL_CE); + /* if we paniced because of watchdog, PSL_CE will be clear. */ + KASSERT(panicstr != NULL || (mfmsr() & PSL_CE)); if (ipl == old_ipl) return; @@ -527,7 +528,8 @@ e500_splraise(int ipl) struct cpu_info * const ci = curcpu(); const int old_ipl = ci->ci_cpl; - KASSERT(mfmsr() & PSL_CE); + /* if we paniced because of watchdog, PSL_CE will be clear. */ + KASSERT(panicstr != NULL || (mfmsr() & PSL_CE)); if (old_ipl < ipl) { //const @@ -814,7 +816,8 @@ e500_extintr(struct trapframe *tf) struct cpu_softc * const cpu = ci->ci_softc; const int old_ipl = ci->ci_cpl; - KASSERT(mfmsr() & PSL_CE); + /* if we paniced because of watchdog, PSL_CE will be clear. */ + KASSERT(panicstr != NULL || (mfmsr() & PSL_CE)); #if 0 // printf("%s(%p): idepth=%d enter\n", __func__, tf, ci->ci_idepth);