From owner-freebsd-arch Mon Jan 7 13:26: 6 2002 Delivered-To: freebsd-arch@freebsd.org Received: from pcnet1.pcnet.com (pcnet1.pcnet.com [204.213.232.3]) by hub.freebsd.org (Postfix) with ESMTP id B975537B404 for ; Mon, 7 Jan 2002 13:26:03 -0800 (PST) Received: (from eischen@localhost) by pcnet1.pcnet.com (8.12.1/8.12.1) id g07LOskq027959; Mon, 7 Jan 2002 16:24:54 -0500 (EST) Date: Mon, 7 Jan 2002 16:24:54 -0500 (EST) From: Daniel Eischen To: Nate Williams Cc: Dan Eischen , Peter Wemm , Archie Cobbs , Alfred Perlstein , arch@FreeBSD.ORG Subject: Re: Request for review: getcontext, setcontext, etc In-Reply-To: <15418.3903.102913.925450@caddis.yogotech.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Mon, 7 Jan 2002, Nate Williams wrote: > > > > What guarantees do you have that the FP state is restored > > > > to where it was prior to calling foo_fp_munch_lots_more()? > > > > > > Because the code (and code similar to it) is called by the thread > > > scheduler when a thread switches context. > > > > > > Above, if the thread switches context (involuntarily or voluntarily), > > > the code I posted (and others routines similar to it it) also saves the > > > context, and just before the context is switched back to the above > > > thread, the FPU context is restored (along with all of the other > > > information necessary to restore the thread context). > > > > > > Not all thread switches are done using yield. > > > > I am only concerned with voluntary switches; forget about signals > > and preemptions. The threads library knows the difference between > > voluntary and involuntary switches. Involuntary switches always > > come from the kernel (in libc_r via signals) > > The JDK is the same. > > > and have the full FPU state saved (and restored when resumed). > > Is this done with fsave and frstor, which saves the entire context? > Where is this done in the libc_r code? (I looked on my 4.5-PRE box, but > nothing jumped out at me in grep search.) Search for FP_SAVE_UC and FP_RESTORE_UC. You should find it in pthread_private.h (where it is defined) and referenced in uthread_kern.c and uthread_sig.c (src/lib/libc_r/uthread/). -- Dan Eischen To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message