Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/powerpc/ibm4xx Fix KASSERT(l == curlwp)ed in mi_swi...



details:   https://anonhg.NetBSD.org/src/rev/06273ecf8c0c
branches:  trunk
changeset: 784776:06273ecf8c0c
user:      kiyohara <kiyohara%NetBSD.org@localhost>
date:      Sat Feb 09 11:22:51 2013 +0000

description:
Fix KASSERT(l == curlwp)ed in mi_switch().  Don't use INTSTK of cpu_info in
INTR_PROLOG when user-mode.  Interrupted user context switches to newlwp, if
sched tick.  This context must save to USPACE.
When use our INTSTK?

diffstat:

 sys/arch/powerpc/ibm4xx/trap_subr.S |  9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diffs (23 lines):

diff -r 5f7c1170d1eb -r 06273ecf8c0c sys/arch/powerpc/ibm4xx/trap_subr.S
--- a/sys/arch/powerpc/ibm4xx/trap_subr.S       Sat Feb 09 11:20:56 2013 +0000
+++ b/sys/arch/powerpc/ibm4xx/trap_subr.S       Sat Feb 09 11:22:51 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: trap_subr.S,v 1.23 2013/01/29 15:33:44 kiyohara Exp $  */
+/*     $NetBSD: trap_subr.S,v 1.24 2013/02/09 11:22:51 kiyohara Exp $  */
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -166,9 +166,10 @@
        mfxer   %r30;                   /* save XER */          \
        mfsrr1  %r31;                                           \
        mtcr    %r31;                                           \
-       lwz     %r1,CI_INTSTK(%r1);     /* get intstk */        \
-       bt      MSR_PR,1f;              /* branch if PSL_PR is true */ \
-       mfsprg1 %r1;                    /* yes, get old SP */   \
+       mfsprg1 %r1;                    /* restore SP */        \
+       bf      MSR_PR,1f;              /* branch if PSL_PR is false */ \
+       GET_PCB(%r1);                                           \
+       addi    %r1,%r1,USPACE-CALLFRAMELEN; /* stack is top of user struct */ \
 1:
 
 /*



Home | Main Index | Thread Index | Old Index