This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: PATCH: Fix ll/sc for mips (take 3)
On Mon, Feb 04, 2002 at 08:42:47PM -0800, H . J . Lu wrote:
> On Mon, Feb 04, 2002 at 09:58:04PM -0500, Daniel Jacobowitz wrote:
> >
> > > --- libc/linuxthreads/sysdeps/mips/pspinlock.c.llsc Mon Feb 4 13:45:01 2002
> > > +++ libc/linuxthreads/sysdeps/mips/pspinlock.c Mon Feb 4 17:09:02 2002
> > > @@ -40,7 +40,7 @@ __pthread_spin_lock (pthread_spinlock_t
> > > "bnez %1,1b\n\t"
> > > " li %2,1\n\t"
> > > "sc %2,%0\n\t"
> > > - "beqzl %2,1b\n\t"
> > > + "beqz %2,1b\n\t"
> > > " ll %1,%3\n\t"
> > > ".set pop"
> > > : "=m" (*lock), "=&r" (tmp1), "=&r" (tmp2)
> >
> > Is that really what you meant to do? The ll is now in the delay slot
> > of the beqz.
>
> Yes, it is ok since we don't care what ll does if the branch is not
> taken.
Won't this cause some gratuitous thrashing if someone else is trying to
get the spinlock at the same time?
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer