Review for libpthread support

Jake Burkholder jake at locore.ca
Sun Oct 5 13:21:40 PDT 2003


On Sunday 05 October 2003 13:46, Daniel Eischen wrote:
> On Sun, 5 Oct 2003, Jake Burkholder wrote:
> > On Sunday 05 October 2003 12:21, Daniel Eischen wrote:
> > > Hi guys,
> > >
> > > I have a patch for adding libpthread support for sparc64.  It's jake's
> > > patch, with a few mods by myself.  I'd like for some folks to look it
> > > over.  I haven't tested it; I need a couple of questions answered
> > > first so I can fill in a missing piece.
> > >
> > >   o Can someone look at the end of __thr_getcontext (line 524 of
> > >     the patch)?  I need to test %i2 for NULL and branch to 1 if true.
> > >
> > > 	+/*	bz	%i2, 1f */
> > > 	+	stx	%i1, [%i2]
> > > 	+1:	ldx	[%sp], %i1			/* restore %i1 */
> > > 	+	ldx	[%sp + 8], %i2			/* restore %i2 */
> >
> > brz.  Beware of delay slots, the instruction after a branch is executed
> > before the branch is taken.
>
> OK.
>
> > Use the locals as temporaries instead of using the stack, eg
>
> What if a thread gets interrupted while using locals?  _thr_setcontext()
> is suppose to be able to resume a thread that was interrupted anywhere.
> What if some library function used locals, thread T1 had a page
> fault, and it's context was exported back to libpthread?  The
> library may run other threads before resuming T1 again.

They're part of T1's context.  They'll get saved on T1's stack on entry to the 
kernel to handle the page fault.

Jake



More information about the freebsd-sparc64 mailing list