Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sparc/include Looks like sparc clears want_ast with...



details:   https://anonhg.NetBSD.org/src/rev/9a3ea2515c81
branches:  trunk
changeset: 966945:9a3ea2515c81
user:      ad <ad%NetBSD.org@localhost>
date:      Sat Nov 23 16:50:39 2019 +0000

description:
Looks like sparc clears want_ast with interrupts enabled, so check+clear it
and call mi_userret() in a loop.

diffstat:

 sys/arch/sparc/include/userret.h |  7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diffs (23 lines):

diff -r 36e24036923d -r 9a3ea2515c81 sys/arch/sparc/include/userret.h
--- a/sys/arch/sparc/include/userret.h  Sat Nov 23 16:36:38 2019 +0000
+++ b/sys/arch/sparc/include/userret.h  Sat Nov 23 16:50:39 2019 +0000
@@ -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 @@
 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);



Home | Main Index | Thread Index | Old Index