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>