Do not set 'flush to zero' VFPSCR_FZ bit by default. The correct

implementation of IEEE 754 arithmetic depends on denormals operating
correctly.  Both perl test suite and paranoia tripped over the
setting.

Reported by:	Stefan Parvu <sparvu@kronometrix.org>
Discussed with:	andrew
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2015-10-02 13:25:59 +00:00
parent c39e422eed
commit 7ecbae3523
2 changed files with 2 additions and 2 deletions

View File

@ -1069,7 +1069,7 @@ init_proc0(vm_offset_t kstack)
(thread0.td_kstack + kstack_pages * PAGE_SIZE) - 1;
thread0.td_pcb->pcb_flags = 0;
thread0.td_pcb->pcb_vfpcpu = -1;
thread0.td_pcb->pcb_vfpstate.fpscr = VFPSCR_DN | VFPSCR_FZ;
thread0.td_pcb->pcb_vfpstate.fpscr = VFPSCR_DN;
thread0.td_frame = &proc0_tf;
pcpup->pc_curpcb = thread0.td_pcb;
}

View File

@ -134,7 +134,7 @@ cpu_fork(register struct thread *td1, register struct proc *p2,
pcb2->pcb_regs.sf_sp = STACKALIGN(td2->td_frame);
pcb2->pcb_vfpcpu = -1;
pcb2->pcb_vfpstate.fpscr = VFPSCR_DN | VFPSCR_FZ;
pcb2->pcb_vfpstate.fpscr = VFPSCR_DN;
tf = td2->td_frame;
tf->tf_spsr &= ~PSR_C;