Module Name: src Committed By: isaki Date: Sat Dec 28 11:15:11 UTC 2024
Modified Files: src/sys/arch/m68k/fpe: fpu_emulate.c Log Message: m68k/fpe: Two bugfixes in test_cc(). - Don't clear the exception byte in FPSR. According to the manual, all bits except BSUN are "not affected". - Accumulate AIOP bit always. XXX Need to look this again later. brcc() looks to have similar one. To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/arch/m68k/fpe/fpu_emulate.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/m68k/fpe/fpu_emulate.c diff -u src/sys/arch/m68k/fpe/fpu_emulate.c:1.44 src/sys/arch/m68k/fpe/fpu_emulate.c:1.45 --- src/sys/arch/m68k/fpe/fpu_emulate.c:1.44 Sat Dec 28 11:09:43 2024 +++ src/sys/arch/m68k/fpe/fpu_emulate.c Sat Dec 28 11:15:11 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emulate.c,v 1.44 2024/12/28 11:09:43 isaki Exp $ */ +/* $NetBSD: fpu_emulate.c,v 1.45 2024/12/28 11:15:11 isaki Exp $ */ /* * Copyright (c) 1995 Gordon W. Ross @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fpu_emulate.c,v 1.44 2024/12/28 11:09:43 isaki Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emulate.c,v 1.45 2024/12/28 11:15:11 isaki Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -918,7 +918,6 @@ test_cc(struct fpemu *fe, int pred) fpsr = fe->fe_fpsr; invert = 0; - fpsr &= ~FPSR_EXCP; /* clear all exceptions */ DPRINTF(("%s: fpsr=0x%08x\n", __func__, fpsr)); pred &= 0x3f; /* lowest 6 bits */ @@ -990,6 +989,10 @@ test_cc(struct fpemu *fe, int pred) if (sig_bsun && (fpsr & FPSR_NAN)) { fpsr |= FPSR_BSUN; } + /* if BSUN is set, IOP is set too */ + if ((fpsr & FPSR_BSUN)) { + fpsr |= FPSR_AIOP; + } /* put fpsr back */ fe->fe_fpframe->fpf_fpsr = fe->fe_fpsr = fpsr;