Module Name: src Committed By: skrll Date: Sat Jan 16 13:29:47 UTC 2010
Modified Files: src/sys/arch/hppa/hppa: hppa_machdep.c trap.c Log Message: Tweak astpending handling. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/hppa/hppa/hppa_machdep.c cvs rdiff -u -r1.69 -r1.70 src/sys/arch/hppa/hppa/trap.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/hppa/hppa/hppa_machdep.c diff -u src/sys/arch/hppa/hppa/hppa_machdep.c:1.18 src/sys/arch/hppa/hppa/hppa_machdep.c:1.19 --- src/sys/arch/hppa/hppa/hppa_machdep.c:1.18 Sat Nov 21 15:36:33 2009 +++ src/sys/arch/hppa/hppa/hppa_machdep.c Sat Jan 16 13:29:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: hppa_machdep.c,v 1.18 2009/11/21 15:36:33 rmind Exp $ */ +/* $NetBSD: hppa_machdep.c,v 1.19 2010/01/16 13:29:47 skrll Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hppa_machdep.c,v 1.18 2009/11/21 15:36:33 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hppa_machdep.c,v 1.19 2010/01/16 13:29:47 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -363,10 +363,14 @@ if (ci->ci_want_resched && !immed) return; ci->ci_want_resched = 1; + /* setsoftast(ci->ci_data.cpu_onproc); */ + setsoftast(); + #ifdef MULTIPROCESSOR - if (ci->ci_curlwp != ci->ci_data.cpu_idlelwp) { - /* aston(ci->ci_curlwp); */ - setsoftast(); + if (ci->ci_curlwp != ci->ci_data.cpu_idlelwp) { + if (immed && ci != curcpu()) { + /* XXX send IPI */ + } } #endif } Index: src/sys/arch/hppa/hppa/trap.c diff -u src/sys/arch/hppa/hppa/trap.c:1.69 src/sys/arch/hppa/hppa/trap.c:1.70 --- src/sys/arch/hppa/hppa/trap.c:1.69 Sat Jan 16 07:56:16 2010 +++ src/sys/arch/hppa/hppa/trap.c Sat Jan 16 13:29:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.69 2010/01/16 07:56:16 skrll Exp $ */ +/* $NetBSD: trap.c,v 1.70 2010/01/16 13:29:47 skrll Exp $ */ /*- * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.69 2010/01/16 07:56:16 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.70 2010/01/16 13:29:47 skrll Exp $"); /* #define INTRDEBUG */ /* #define TRAPDEBUG */ @@ -206,8 +206,11 @@ { struct proc *p = l->l_proc; - if (curcpu()->ci_want_resched) { - preempt(); + if (astpending) { + astpending = 0; + if (curcpu()->ci_want_resched) { + preempt(); + } } mi_userret(l);