Date: Sat, 11 May 1996 03:31:23 -0700 (PDT) From: asami@cs.berkeley.edu (Satoshi Asami) To: bde@zeta.org.au Cc: bde@zeta.org.au, current@freebsd.org, nisha@cs.berkeley.edu Subject: Re: some more on fast bcopy Message-ID: <199605111031.DAA19743@silvia.HIP.Berkeley.EDU> In-Reply-To: <199605110914.TAA21036@godzilla.zeta.org.au> (message from Bruce Evans on Sat, 11 May 1996 19:14:07 %2B1000)
next in thread | previous in thread | raw e-mail | index | archive | help
* It can't be interrupted, but it can go to sleep for handling a page
* fault. Then bad things may happen.
You mean they can get waken up in the wrong order and something
similar to what I said can happen?
* This can probably be fixed by switching the FP context in cpu_switch().
*
* It isn't even necessary to save the FP registers, at least in
* non-interrupt handlers, if they aren't already in use. In particular,
* copyin() and copyout() are never called from interrupt handlers, so
* it isn't necessary to preserve the kernel FP registers (they are
* guaranteed to not be in use). Only the user FP context needs to be
* preserved. This optimization is closely related to fixing the bug.
* It should start out something like:
Cool cool.
* if (intr_nesting_level > 0) {
* /* Save reentrantly the same as now. */
* } else {
* if (npxproc != NULL) {
* assert(npxproc == curproc);
* fnsave(&curpcb->pcb_savefpu);
* npxproc = NULL;
* }
:
Um, I assume you are talking about /sys/i386/i386/swtch.s, can you
somehow translate this into, say, assembly language? ;) My x86
knowledge is not nearly enough for this kind of stuff....
* It's normal for one stack frame to be missing for panics for fatal
* traps. I fixed this in rev.1.10 of exception.s but I think rev.1.14
* broke it again.
I see.
Satoshi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605111031.DAA19743>
