Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2003 18:16:00 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        sparc@freebsd.org
Cc:        tmoestl@gmx.net
Subject:   Re: Sparc64 floating point questions
Message-ID:  <200301170216.h0H2G0PZ040597@vashon.polstra.com>
In-Reply-To: <20030115021706.GA5902@crow.dom2ip.de>
References:  <XFMail.20030114144825.jdp@polstra.com> <20030115003013.GA3536@crow.dom2ip.de> <200301150047.h0F0lNFc037477@vashon.polstra.com> <20030115021706.GA5902@crow.dom2ip.de>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <20030115021706.GA5902@crow.dom2ip.de>,
Thomas Moestl  <tmoestl@gmx.net> wrote:
> 
> Oh, I should have mentioned that %fprs is a bit special; the kernel
> uses the FEF bit to test whether floating point support is enabled for
> the process, and will only save the state across context switches in
> that case. It will also lazily restore the context, i.e. it will
> disable the FEF bit and reload the registers only when the process
> uses floating point operations for the next time (which triggers an
> exception in that case).
> That means that %fprs must be restored first, otherwise this might
> clear FEF and cause stale values to be reloaded later.
> In fact, you do not need to save it at all; the only other bits in
> that register are the DU (upper fp register file half dirty) and DL
> (lower half dirty) bits, which are automatically maintained.
> For performance, it would probably be best to always just set the FEF
> bit before reloading the other registers (this is not required
> though), like:
> 
> 	 wr	%g0, FPRS_FEF, %fprs

I'm a little bit confused about this.  Won't the instruction above
clear the DU and DL bits?  And isn't that a bad thing to do?  It
seems like the state maintained in those bits is per-process rather
than per-thread.

John
-- 
  John Polstra
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Disappointment is a good sign of basic intelligence."  -- Chögyam Trungpa


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-sparc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301170216.h0H2G0PZ040597>