Module Name: src Committed By: maya Date: Fri Nov 11 16:49:30 UTC 2016
Modified Files: src/sys/arch/mips/mips: spl.S Log Message: switch post-mfc0 call "hazard barrier" from NOP_L to MFC0_HAZARD. this means it will be applied if MIPS3 too, and now with the prior commit, it will be a superscalar nop, not just a plain nop. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/arch/mips/mips/spl.S 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/mips/mips/spl.S diff -u src/sys/arch/mips/mips/spl.S:1.13 src/sys/arch/mips/mips/spl.S:1.14 --- src/sys/arch/mips/mips/spl.S:1.13 Fri Nov 11 16:45:14 2016 +++ src/sys/arch/mips/mips/spl.S Fri Nov 11 16:49:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: spl.S,v 1.13 2016/11/11 16:45:14 maya Exp $ */ +/* $NetBSD: spl.S,v 1.14 2016/11/11 16:49:30 maya 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.13 2016/11/11 16:45:14 maya Exp $") +RCSID("$NetBSD: spl.S,v 1.14 2016/11/11 16:49:30 maya Exp $") #include "assym.h" @@ -76,7 +76,7 @@ _splraise: bnez v1, 1f # yes, don't change. nop # branch delay mfc0 v1, MIPS_COP_0_STATUS # fetch status register - NOP_L # load delay + MFC0_HAZARD # load delay or v1, MIPS_INT_MASK # enable all interrupts xor a0, v1 # disable ipl's masked bits DYNAMIC_STATUS_MASK(a0,v0) # machine dependent masking @@ -101,7 +101,7 @@ _splraise: 1: #ifdef PARANOIA mfc0 v1, MIPS_COP_0_STATUS - NOP_L # load delay + MFC0_HAZARD # load delay and a0, v1 # a1 contains bit that MBZ 3: bnez a0, 3b # loop forever nop # branch delay @@ -167,7 +167,7 @@ STATIC_LEAF(_splsw_spl0) or v1, MIPS_SR_INT_IE # mask sure interrupts are on xor v1, MIPS_INT_MASK # invert mfc0 a0, MIPS_COP_0_STATUS - NOP_L # load delay + MFC0_HAZARD # load delay or v0, a0, v1 DYNAMIC_STATUS_MASK(v0,t0) # machine dependent masking mtc0 zero, MIPS_COP_0_STATUS ## disable interrupts @@ -186,7 +186,7 @@ STATIC_LEAF(_splsw_setsoftintr) mtc0 zero, MIPS_COP_0_STATUS # disable interrupts (2 cycles) COP0_SYNC mfc0 v0, MIPS_COP_0_CAUSE # fetch cause register - NOP_L # load delay + MFC0_HAZARD # load delay or v0, v0, a0 # set soft intr. bits mtc0 v0, MIPS_COP_0_CAUSE # store back COP0_SYNC @@ -228,7 +228,7 @@ STATIC_XLEAF(_splsw_splhigh_noprof) beq v0, a1, 1f # don't do anything if IPL_HIGH nop # branch delay mfc0 v1, MIPS_COP_0_STATUS # fetch status register - NOP_L # load delay + MFC0_HAZARD # load delay and a0, v1, MIPS_INT_MASK # select all interrupts xor a0, v1 # clear all interrupts DYNAMIC_STATUS_MASK(a0,a2) # machine dependent masking @@ -306,7 +306,7 @@ END(_splsw_splsoftclock) STATIC_LEAF(_splsw_splintr) mfc0 ta1, MIPS_COP_0_CAUSE # get active interrupts - NOP_L # load delay + MFC0_HAZARD # load delay # restrict to hard int bits and v1, ta1, MIPS_HARD_INT_MASK # now have pending interrupts li v0, IPL_NONE # return IPL_NONE