From owner-freebsd-sparc64@FreeBSD.ORG Sun Oct 5 13:21:40 2003 Return-Path: Delivered-To: freebsd-sparc64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CB6CC16A4B3; Sun, 5 Oct 2003 13:21:40 -0700 (PDT) Received: from k6.locore.ca (k6.locore.ca [198.96.117.170]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0B4F443FE9; Sun, 5 Oct 2003 13:21:40 -0700 (PDT) (envelope-from jake@locore.ca) Received: from k7.locore.ca (k7.locore.ca [192.168.0.2]) by k6.locore.ca (Postfix) with ESMTP id AAC3E1C53B; Sun, 5 Oct 2003 16:20:55 -0400 (EDT) From: Jake Burkholder To: deischen@freebsd.org, Daniel Eischen Date: Sun, 5 Oct 2003 16:25:04 -0400 User-Agent: KMail/1.5.4 References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200310051625.04587.jake@locore.ca> cc: sparc64@freebsd.org Subject: Re: Review for libpthread support X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Oct 2003 20:21:40 -0000 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