Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/mips/mips Two fixes:



details:   https://anonhg.NetBSD.org/src/rev/f02aafd0fe40
branches:  trunk
changeset: 346640:f02aafd0fe40
user:      skrll <skrll%NetBSD.org@localhost>
date:      Sun Jul 24 18:04:04 2016 +0000

description:
Two fixes:

1) invesion of enable bits in splx (ipl_sr_map is disable mask)

2) Don't overwrite the cause register in spl0 - there might be pending
   softints.

The second helps with recent boot issues after several new workqueues
are created.  lwp_startup would call spl0 and lose the pending softints
status.

diffstat:

 sys/arch/mips/mips/spl.S |  10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diffs (38 lines):

diff -r 964c4fa35e6a -r f02aafd0fe40 sys/arch/mips/mips/spl.S
--- a/sys/arch/mips/mips/spl.S  Sun Jul 24 16:47:49 2016 +0000
+++ b/sys/arch/mips/mips/spl.S  Sun Jul 24 18:04:04 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: spl.S,v 1.10 2015/06/27 03:29:09 matt Exp $    */
+/*     $NetBSD: spl.S,v 1.11 2016/07/24 18:04:04 skrll Exp $   */
 
 /*-
  * Copyright (c) 2009, 2010 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 #include <mips/asm.h>
 #include <mips/cpuregs.h>
 
-RCSID("$NetBSD: spl.S,v 1.10 2015/06/27 03:29:09 matt Exp $")
+RCSID("$NetBSD: spl.S,v 1.11 2016/07/24 18:04:04 skrll Exp $")
 
 #include "assym.h"
 
@@ -140,8 +140,8 @@
 1:
        mfc0    v1, MIPS_COP_0_STATUS           # fetch status register
        NOP_L                                   # load delay
-       or      v1, MIPS_INT_MASK               # set all INT bits
-       xor     v1, a1                          # clear any bits for this IPL
+       xor     a1, MIPS_INT_MASK               # invert SR bits
+       or      v1, a1                          # set any bits for this IPL
        DYNAMIC_STATUS_MASK(v1,t0)              # machine dependent masking
        mtc0    zero, MIPS_COP_0_STATUS         ## disable interrupts
        COP0_SYNC
@@ -173,8 +173,6 @@
        PTR_L   a3, L_CPU(MIPS_CURLWP)
        or      v1, MIPS_SR_INT_IE              # mask sure interrupts are on
        xor     v1, MIPS_INT_MASK               # invert
-       mtc0    zero, MIPS_COP_0_CAUSE          # clear SOFT_INT bits
-       COP0_SYNC
        mfc0    a0, MIPS_COP_0_STATUS
        NOP_L                                   # load delay
        or      v0, a0, v1



Home | Main Index | Thread Index | Old Index