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>