Use a different initial FPCR, mainly to suppress the ieee inexact trap.

This commit is contained in:
ross 1999-04-29 03:02:20 +00:00
parent d6b5fedecb
commit 7288a55336

View File

@ -1,4 +1,4 @@
/* $NetBSD: machdep.c,v 1.171 1999/04/27 02:33:35 cgd Exp $ */
/* $NetBSD: machdep.c,v 1.172 1999/04/29 03:02:20 ross Exp $ */
/*-
* Copyright (c) 1998, 1999 The NetBSD Foundation, Inc.
@ -82,7 +82,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.171 1999/04/27 02:33:35 cgd Exp $");
__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.172 1999/04/29 03:02:20 ross Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -134,6 +134,7 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.171 1999/04/27 02:33:35 cgd Exp $");
#include <machine/rpb.h>
#include <machine/prom.h>
#include <machine/conf.h>
#include <machine/ieeefp.h>
#include <alpha/alpha/cpuvar.h>
@ -1924,8 +1925,14 @@ setregs(p, pack, stack)
bzero(tfp->tf_regs, FRAME_SIZE * sizeof tfp->tf_regs[0]);
#endif
bzero(&p->p_addr->u_pcb.pcb_fp, sizeof p->p_addr->u_pcb.pcb_fp);
#define FP_RN 2 /* XXX */
p->p_addr->u_pcb.pcb_fp.fpr_cr = (long)FP_RN << 58;
p->p_addr->u_pcb.pcb_fp.fpr_cr = FPCR_INED
| FPCR_UNFD
| FPCR_UNDZ
| FPCR_DYN(FP_RN)
| FPCR_OVFD
| FPCR_DZED
| FPCR_INVD
| FPCR_DNZ;
alpha_pal_wrusp(stack);
tfp->tf_regs[FRAME_PS] = ALPHA_PSL_USERSET;
tfp->tf_regs[FRAME_PC] = pack->ep_entry & ~3;