From f51d8b6846fc5e628358be50539b41f469a8cc36 Mon Sep 17 00:00:00 2001 From: jkh Date: Wed, 22 Jun 1994 05:52:25 +0000 Subject: Commit a whole cluster of last minute critical (and one cosmetic) fixes from David Greenman, Bruce Evans and Julian Elischer. They are: [vnode pager - David/Bruce]: The following patch fixes a problem where some data could be lost in a delayed-write buffer if the cached buffer was larger than a page. This fix was provided by Bruce Evans and modified slightly by me. [st.c - Julian]: My fix for "bad request, must be between 0 and 0" RTFS if you're interested). [gnu/fpemul - David/Bruce]: These changes fix single stepping of emulated FPU instructions. Previously, the instruction after an emulated instruction was executed without causing a SIGTRAP ... The also fix the initial control word being different for the GPL emulator (it is still wrong for the old emulator) and remove an unnecessary panic when emulation is not configured (I hope at least init, sh and reboot will run without floating point. I remember only df and mkfs being broken by the lack of FP in 0.0). [Various fixes described below - Bruce/David]: sys/i386/boot/boot2.S: Yet another attempt to propagate the correct fix for 16 vs 32-bit mode bugs. [verified] sys/i386/i386/db_interface.c: Protect against reentering Debugger(). sys/kern/kern_time.c: Don't allow 'time.tv_usec == 0' except at clock interrupts. sys/pcfs/pcfs_fat.c: Make it compile without -O. sys/scsi/sd.c: Fix as posted to some freebsd mailing list. (changes the order of the assignment of "sectors" because it earlier value is needed first -DG) sys/vm/vm_glue.c: Fix stale comments and verbose code. sys/vm/vm_mmap.c Fix off by 1 errors and verbose code. [From Nate - cosmetic but non-intrusive and useful enough to go in] sys/i386/isa/isa.c: Appended you'll find a patch to the NMI error log routine in isa/isa.c. The below patch just adds some additional information when an NMI occurs which can help debug the hardware problem. --- sys/gnu/i386/fpemul/fpu_entry.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'sys/gnu') diff --git a/sys/gnu/i386/fpemul/fpu_entry.c b/sys/gnu/i386/fpemul/fpu_entry.c index 7b41732..367340a 100644 --- a/sys/gnu/i386/fpemul/fpu_entry.c +++ b/sys/gnu/i386/fpemul/fpu_entry.c @@ -55,7 +55,7 @@ * * W. Metzenthen June 1994. * - * $Id: fpu_entry.c,v 1.2 1994/04/29 21:16:21 gclarkii Exp $ + * $Id: fpu_entry.c,v 1.3 1994/06/10 07:44:22 rich Exp $ * */ @@ -210,6 +210,7 @@ math_emulate(struct trapframe * tframe) if ((((struct pcb *) curproc->p_addr)->pcb_flags & FP_SOFTFP) == 0) { finit(); + control_word = __INITIAL_NPXCW__; ((struct pcb *) curproc->p_addr)->pcb_flags |= FP_SOFTFP; } FPU_info = tframe; @@ -228,10 +229,8 @@ math_emulate(struct trapframe * tframe) #endif FPU_lookahead = FPU_LOOKAHEAD; -#if notnow /* I dont know that much of traceing. Is it right? --pink-- */ if (curproc->p_flag & STRC) FPU_lookahead = 0; -#endif do_another_FPU_instruction: -- cgit v1.1