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);