Module Name: src Committed By: ad Date: Sat Nov 23 16:50:39 UTC 2019
Modified Files: src/sys/arch/sparc/include: userret.h Log Message: Looks like sparc clears want_ast with interrupts enabled, so check+clear it and call mi_userret() in a loop. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/sparc/include/userret.h 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/sparc/include/userret.h diff -u src/sys/arch/sparc/include/userret.h:1.9 src/sys/arch/sparc/include/userret.h:1.10 --- src/sys/arch/sparc/include/userret.h:1.9 Thu Nov 21 19:24:01 2019 +++ src/sys/arch/sparc/include/userret.h Sat Nov 23 16:50:39 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: userret.h,v 1.9 2019/11/21 19:24:01 ad Exp $ */ +/* $NetBSD: userret.h,v 1.10 2019/11/23 16:50:39 ad Exp $ */ /* * Copyright (c) 1996 @@ -62,11 +62,10 @@ static __inline void userret(struct lwp *l, int pc, u_quad_t oticks) { struct proc *p = l->l_proc; - - mi_userret(l); - if (cpuinfo.ci_want_ast) { + while (cpuinfo.ci_want_ast) { cpuinfo.ci_want_ast = 0; + mi_userret(l); if (l->l_pflag & LP_OWEUPC) { l->l_pflag &= ~LP_OWEUPC; ADDUPROF(l);