Date: Tue, 14 Sep 2010 11:03:52 +0530 From: "Jayachandran C." <c.jayachandran@gmail.com> To: Neel Natu <neelnatu@gmail.com> Cc: freebsd-mips@freebsd.org Subject: Re: PATCH: make usage of set_intr_mask() sane Message-ID: <AANLkTikmi6UC2sSHj45dzDRRrC1Z-8C%2Bzr1fhbovPVqJ@mail.gmail.com> In-Reply-To: <AANLkTimsZuEOkGLq2jOaY9ZSkm=oEmSHDQ8GxWVRr7qg@mail.gmail.com> References: <AANLkTimsZuEOkGLq2jOaY9ZSkm=oEmSHDQ8GxWVRr7qg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 14, 2010 at 7:37 AM, Neel Natu <neelnatu@gmail.com> wrote: > Hi, > > This patch changes the meaning of the 'mask' argument to > 'set_intr_mask(mask)' to exactly match the meaning of the IM0..7 bits > in the CP0 status register. > > The way we have it set up right now is exactly the opposite for no > good reason IMHO. > > Please review and let me know if there are any objections. This is something I thought about doing with the last patch - so I would like to see this go in. But I think the reason probably is that on MIPS setting interrupt mask bit to 1 enables the interrupt, instead of masking (disabling) it. JC. > best > Neel > > Index: sys/mips/sibyte/sb_machdep.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/mips/sibyte/sb_machdep.c =A0 =A0 =A0 =A0(revision 212587) > +++ sys/mips/sibyte/sb_machdep.c =A0 =A0 =A0 =A0(working copy) > @@ -370,7 +370,7 @@ > =A0 =A0 =A0 =A0 */ > =A0 =A0 =A0 =A0clock_int_mask =3D hard_int_mask(5); > =A0 =A0 =A0 =A0ipi_int_mask =3D hard_int_mask(platform_ipi_intrnum()); > - =A0 =A0 =A0 set_intr_mask(MIPS_SR_INT_MASK & ~(ipi_int_mask | clock_int= _mask)); > + =A0 =A0 =A0 set_intr_mask(ipi_int_mask | clock_int_mask); > =A0} > > =A0int > Index: sys/mips/include/cpufunc.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/mips/include/cpufunc.h =A0(revision 212587) > +++ sys/mips/include/cpufunc.h =A0(working copy) > @@ -272,7 +272,7 @@ > =A0 =A0 =A0 =A0uint32_t ostatus; > > =A0 =A0 =A0 =A0ostatus =3D mips_rd_status(); > - =A0 =A0 =A0 mask =3D (ostatus & ~MIPS_SR_INT_MASK) | (~mask & MIPS_SR_I= NT_MASK); > + =A0 =A0 =A0 mask =3D (ostatus & ~MIPS_SR_INT_MASK) | (mask & MIPS_SR_IN= T_MASK); > =A0 =A0 =A0 =A0mips_wr_status(mask); > =A0 =A0 =A0 =A0return (ostatus); > =A0} > Index: sys/mips/cavium/octeon_mp.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/mips/cavium/octeon_mp.c (revision 212587) > +++ sys/mips/cavium/octeon_mp.c (working copy) > @@ -96,7 +96,7 @@ > =A0 =A0 =A0 =A0 */ > =A0 =A0 =A0 =A0clock_int_mask =3D hard_int_mask(5); > =A0 =A0 =A0 =A0ipi_int_mask =3D hard_int_mask(platform_ipi_intrnum()); > - =A0 =A0 =A0 set_intr_mask(MIPS_SR_INT_MASK & ~(ipi_int_mask | clock_int= _mask)); > + =A0 =A0 =A0 set_intr_mask(ipi_int_mask | clock_int_mask); > > =A0 =A0 =A0 =A0mips_wbflush(); > =A0} > Index: sys/mips/mips/machdep.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/mips/mips/machdep.c =A0 =A0 (revision 212587) > +++ sys/mips/mips/machdep.c =A0 =A0 (working copy) > @@ -356,7 +356,7 @@ > =A0 =A0 =A0 =A0 * Mask all interrupts. Each interrupt will be enabled > =A0 =A0 =A0 =A0 * when handler is installed for it > =A0 =A0 =A0 =A0 */ > - =A0 =A0 =A0 set_intr_mask(MIPS_SR_INT_MASK); > + =A0 =A0 =A0 set_intr_mask(0); > > =A0 =A0 =A0 =A0/* Clear BEV in SR so we start handling our own exceptions= */ > =A0 =A0 =A0 =A0mips_wr_status(mips_rd_status() & ~MIPS_SR_BEV); > Index: sys/mips/mips/trap.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/mips/mips/trap.c =A0 =A0 =A0 =A0(revision 212587) > +++ sys/mips/mips/trap.c =A0 =A0 =A0 =A0(working copy) > @@ -304,7 +304,7 @@ > =A0 =A0 =A0 =A0 * return to userland. > =A0 =A0 =A0 =A0 */ > =A0 =A0 =A0 =A0if (trapframe->sr & MIPS_SR_INT_IE) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 set_intr_mask(~(trapframe->sr & MIPS_SR_INT= _MASK)); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 set_intr_mask(trapframe->sr & MIPS_SR_INT_M= ASK); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0intr_enable(); > =A0 =A0 =A0 =A0} else { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0intr_disable(); > _______________________________________________ > freebsd-mips@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-mips > To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTikmi6UC2sSHj45dzDRRrC1Z-8C%2Bzr1fhbovPVqJ>