From owner-freebsd-current Fri Dec 6 21:57:28 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 341E237B404 for ; Fri, 6 Dec 2002 21:57:27 -0800 (PST) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8179943EA9 for ; Fri, 6 Dec 2002 21:57:26 -0800 (PST) (envelope-from eischen@pcnet1.pcnet.com) Received: from localhost (eischen@localhost) by mail.pcnet.com (8.12.3/8.12.1) with ESMTP id gB75vGwb003532; Sat, 7 Dec 2002 00:57:16 -0500 (EST) Date: Sat, 7 Dec 2002 00:57:16 -0500 (EST) From: Daniel Eischen To: Julian Elischer Cc: FreeBSD current users Subject: Re: x86 FPU discard question.. In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, 6 Dec 2002, Julian Elischer wrote: > As part of shuting down a thread and discarding it, we want to > throw away any floating point context there may be. > Currently this saves out the floating point state to make the fpu > be declared 'unused'. However we dont't need any fpu state saved. > Is there any way to just mark it as 'unused' without bothering to waste > time saving the current FP context? would just doing > PCPU_SET(fputhread, NULL); > be enough? Hmm, I don't think so. You really want to drop ownership without saving and also to get a trap when the next thread tries to use the FPU. For i386, fpstate_drop() in machdep.c does this. > Currently there is an npxexit() in cpu_thread_exit(). > where npxexit() does: > savecrit = intr_disable(); > if (curthread == PCPU_GET(fpcurthread)) > npxsave(&PCPU_GET(curpcb)->pcb_save); > intr_restore(savecrit); > > My guess is that there needs to be some bit set to tell the hardware > that it is unused so that a trap can be generated on the first use by > another thread. Yeah, it's done in npxdrop() (called from fpstate_drop()). -- Dan Eischen To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message