Skip site navigation (1)Skip section navigation (2)
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>