This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]