CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 09:42:43 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Now, FPU emulation for booke and ibm4xx works fine at a level where all the related ATF tests pass correctly. However, there still remain problems: - FEX and VX bits for FPSCR cannot be modified by mcrfs, mtfsf{,i}, and mtfsb[01]. - Invalid operations should be treated differently depending on FPSCR[VE]. Therefore, comment them in order not to be forgotten. No binary changes. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.32 src/sys/arch/powerpc/fpu/fpu_emu.c:1.33 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.32 Wed Jul 15 09:36:35 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 09:42:43 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.32 2020/07/15 09:36:35 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.33 2020/07/15 09:42:43 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.32 2020/07/15 09:36:35 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.33 2020/07/15 09:42:43 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -605,6 +605,15 @@ fpu_execute(struct trapframe *tf, struct fe->fe_cx = mask & a[1]; fe->fe_fpscr = (fe->fe_fpscr&~mask) | (fe->fe_cx); +/* + * XXX + * Forbidden to set FEX and VX, also for + * mcrfs, mtfsfi, and mtfsb[01]. + * + * XXX + * Handle invalid operation differently, + * depending on VE. + */ /* XXX weird stuff about OX, FX, FEX, and VX should be handled */ break; case OPC63_FCTID:
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 09:36:35 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Try to fix FPSCR bits in the end of emulation: - FPSCR[FEX] is not a sticky bit. - Turn on FPSCR[FEX] if the emulated instruction causes invalid operation, and invalid operation exception is not masked out. - FPSCR[VX] is not a sticky bit, however it should be set when at least one of FPSCR[VXfoo] bits (they are sticky!) is set. - FPSCR[FX] is a sticky bit, and it should be set if FPSCR is modified by instructions other than mtfsf{,i}. To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.31 src/sys/arch/powerpc/fpu/fpu_emu.c:1.32 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.31 Wed Jul 15 09:22:26 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 09:36:35 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.31 2020/07/15 09:22:26 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.32 2020/07/15 09:36:35 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.31 2020/07/15 09:22:26 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.32 2020/07/15 09:36:35 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -147,7 +147,9 @@ FPU_EMU_EVCNT_DECL(fnmadd); FPSCR_VXZDZ|FPSCR_VXIMZ|FPSCR_VXVC|FPSCR_VXSOFT|\ FPSCR_VXSQRT|FPSCR_VXCVI) #define FPSR_EX (FPSCR_VE|FPSCR_OE|FPSCR_UE|FPSCR_ZE|FPSCR_XE) -#define FPSR_EXOP (FPSR_EX_MSK&(~FPSR_EX)) +#define FPSR_INV (FPSCR_VXSNAN|FPSCR_VXISI|FPSCR_VXIDI| \ + FPSCR_VXZDZ|FPSCR_VXIMZ|FPSCR_VXVC|FPSCR_VXSOFT|\ + FPSCR_VXSQRT|FPSCR_VXCVI) int fpe_debug = 0; @@ -287,6 +289,7 @@ fpu_execute(struct trapframe *tf, struct int ra, rb, rc, rt, type, mask, fsr, cx, bf, setcr; unsigned int cond; struct fpreg *fs; + int mtfsf = 0; /* Setup work. */ fp = NULL; @@ -550,6 +553,7 @@ fpu_execute(struct trapframe *tf, struct sizeof(double)); break; case OPC63_MTFSFI: +mtfsf = 1; FPU_EMU_EVCNT_INCR(mtfsfi); DPRINTF(FPE_INSN, ("fpu_execute: MTFSFI\n")); rb >>= 1; @@ -585,6 +589,7 @@ fpu_execute(struct trapframe *tf, struct sizeof(fs->fpscr)); break; case OPC63_MTFSF: +mtfsf = 1; FPU_EMU_EVCNT_INCR(mtfsf); DPRINTF(FPE_INSN, ("fpu_execute: MTFSF\n")); if ((rt = instr.i_xfl.i_flm) == -1) @@ -769,11 +774,10 @@ fpu_execute(struct trapframe *tf, struct if (fp) fpu_implode(fe, fp, type, (u_int *)&fs->fpreg[rt]); cx = fe->fe_cx; - fsr = fe->fe_fpscr; + fsr = fe->fe_fpscr & ~(FPSCR_FEX|FPSCR_VX); if (cx != 0) { - fsr &= ~FPSCR_FX; - if ((cx^fsr)&FPSR_EX_MSK) - fsr |= FPSCR_FX; + if (cx & FPSR_INV) + cx |= FPSCR_VX; mask = fsr & FPSR_EX; mask <<= (25-3); if (cx & mask) @@ -782,11 +786,13 @@ fpu_execute(struct trapframe *tf, struct /* Need to replace CC */ fsr &= ~FPSCR_FPRF; } - if (cx & (FPSR_EXOP)) - fsr |= FPSCR_VX; fsr |= cx; DPRINTF(FPE_INSN, ("fpu_execute: cx %x, fsr %x\n", cx, fsr)); } + if (fsr & FPSR_INV) + fsr |= FPSCR_VX; + if (mtfsf == 0 && ((fsr ^ fe->fe_fpscr) & FPSR_EX_MSK)) + fsr |= FPSCR_FX; if (cond) { cond = fsr & 0xf000;
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 09:22:26 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Set ksi_code correctly via fpu_get_fault_code() for SIGFPE. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.30 src/sys/arch/powerpc/fpu/fpu_emu.c:1.31 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.30 Wed Jul 15 09:16:35 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 09:22:26 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.30 2020/07/15 09:16:35 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.31 2020/07/15 09:22:26 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.30 2020/07/15 09:16:35 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.31 2020/07/15 09:22:26 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -244,6 +244,7 @@ success: DPRINTF(FPE_EX, ("fpu_emulate: SIGFPE\n")); ksi->ksi_signo = SIGFPE; ksi->ksi_trap = EXC_PGM; + ksi->ksi_code = fpu_get_fault_code(); return true; case FAULT:
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 09:16:35 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Do not raise SIGFPE unless MSR[FE0] or MSR[FE1] is set via fenv(3). To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.29 src/sys/arch/powerpc/fpu/fpu_emu.c:1.30 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.29 Wed Jul 15 08:29:07 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 09:16:35 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.29 2020/07/15 08:29:07 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.30 2020/07/15 09:16:35 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.29 2020/07/15 08:29:07 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.30 2020/07/15 09:16:35 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -92,6 +92,8 @@ __KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v #include #include +#include + #include #include #include @@ -191,6 +193,7 @@ fpu_dumpfpn(struct fpn *fp) bool fpu_emulate(struct trapframe *tf, struct fpreg *fpf, ksiginfo_t *ksi) { + struct pcb *pcb; union instr insn; struct fpemu fe; @@ -229,11 +232,15 @@ fpu_emulate(struct trapframe *tf, struct } switch (fpu_execute(tf, &fe, &insn)) { case 0: +success: DPRINTF(FPE_EX, ("fpu_emulate: success\n")); tf->tf_srr0 += 4; return true; case FPE: + pcb = lwp_getpcb(curlwp); + if ((pcb->pcb_flags & PSL_FE_PREC) == 0) + goto success; DPRINTF(FPE_EX, ("fpu_emulate: SIGFPE\n")); ksi->ksi_signo = SIGFPE; ksi->ksi_trap = EXC_PGM;
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 08:29:07 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: FPSCR[FEX] is not a sticky bit; it is always cleared when read from userland via mffs on real hardware. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.28 src/sys/arch/powerpc/fpu/fpu_emu.c:1.29 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.28 Wed Jul 15 08:10:41 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 08:29:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.28 2020/07/15 08:10:41 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.29 2020/07/15 08:29:07 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.28 2020/07/15 08:10:41 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.29 2020/07/15 08:29:07 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -571,6 +571,8 @@ fpu_execute(struct trapframe *tf, struct case OPC63_MFFS: FPU_EMU_EVCNT_INCR(mffs); DPRINTF(FPE_INSN, ("fpu_execute: MFFS\n")); +/* XXX FEX is not sticky */ +fs->fpscr &= ~FPSCR_FEX; memcpy(&fs->fpreg[rt], &fs->fpscr, sizeof(fs->fpscr)); break;
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 08:10:41 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: PR port-powerpc/55425 Fix emulation for mtfsf; source register is frB here. Now, userland processes successfully change rounding mode, by which FPU-optimized code in OpenSSL works just fine as far as I can see. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.27 src/sys/arch/powerpc/fpu/fpu_emu.c:1.28 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.27 Wed Jul 15 07:54:25 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 08:10:41 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.27 2020/07/15 07:54:25 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.28 2020/07/15 08:10:41 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.27 2020/07/15 07:54:25 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.28 2020/07/15 08:10:41 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -586,7 +586,7 @@ fpu_execute(struct trapframe *tf, struct if (rt & (1fpreg[rb]; fe->fe_cx = mask & a[1]; fe->fe_fpscr = (fe->fe_fpscr&~mask) | (fe->fe_cx);
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 07:54:25 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: For trap instruction, ksi_code should be TRAP_BRKPT not TRAP_TRACE. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.26 src/sys/arch/powerpc/fpu/fpu_emu.c:1.27 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.26 Wed Jul 15 07:52:58 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 07:54:25 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.26 2020/07/15 07:52:58 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.27 2020/07/15 07:54:25 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.26 2020/07/15 07:52:58 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.27 2020/07/15 07:54:25 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -224,7 +224,7 @@ fpu_emulate(struct trapframe *tf, struct DPRINTF(FPE_EX, ("fpu_emulate: SIGTRAP\n")); ksi->ksi_signo = SIGTRAP; ksi->ksi_trap = EXC_PGM; - ksi->ksi_code = TRAP_TRACE; + ksi->ksi_code = TRAP_BRKPT; return true; } switch (fpu_execute(tf, &fe, &insn)) {
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 07:52:58 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Do not set ksi->ksi_addr twice. No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.25 src/sys/arch/powerpc/fpu/fpu_emu.c:1.26 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.25 Wed Jul 15 07:37:25 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 07:52:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.25 2020/07/15 07:37:25 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.26 2020/07/15 07:52:58 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.25 2020/07/15 07:37:25 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.26 2020/07/15 07:52:58 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -211,7 +211,6 @@ fpu_emulate(struct trapframe *tf, struct ksi->ksi_signo = SIGSEGV; ksi->ksi_trap = EXC_ISI; ksi->ksi_code = SEGV_MAPERR; - ksi->ksi_addr = (void *)tf->tf_srr0; return true; } @@ -226,7 +225,6 @@ fpu_emulate(struct trapframe *tf, struct ksi->ksi_signo = SIGTRAP; ksi->ksi_trap = EXC_PGM; ksi->ksi_code = TRAP_TRACE; - ksi->ksi_addr = (void *)tf->tf_srr0; return true; } switch (fpu_execute(tf, &fe, &insn)) {
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 07:47:27 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_div.c Log Message: Do not raise divide-by-zero exception when dividend is zero. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/fpu/fpu_div.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/powerpc/fpu/fpu_div.c diff -u src/sys/arch/powerpc/fpu/fpu_div.c:1.5 src/sys/arch/powerpc/fpu/fpu_div.c:1.6 --- src/sys/arch/powerpc/fpu/fpu_div.c:1.5 Sat Jun 27 03:07:57 2020 +++ src/sys/arch/powerpc/fpu/fpu_div.c Wed Jul 15 07:47:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_div.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ +/* $NetBSD: fpu_div.c,v 1.6 2020/07/15 07:47:27 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_div.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_div.c,v 1.6 2020/07/15 07:47:27 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) @@ -200,7 +200,6 @@ fpu_div(struct fpemu *fe) return (x); } if (ISZERO(x)) { - fe->fe_cx |= FPSCR_ZX; if (x->fp_class == y->fp_class) { fe->fe_cx |= FPSCR_VXZDZ; return (fpu_newnan(fe));
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Jul 15 07:37:25 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Remove old workaround foe cache problem on ibm4xx. The problem seems gone already. To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.24 src/sys/arch/powerpc/fpu/fpu_emu.c:1.25 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.24 Mon Jul 6 10:31:23 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Jul 15 07:37:25 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.24 2020/07/06 10:31:23 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.25 2020/07/15 07:37:25 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,11 +76,10 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.24 2020/07/06 10:31:23 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.25 2020/07/15 07:37:25 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" -#include "opt_ppcarch.h" #endif #include @@ -260,17 +259,6 @@ fpu_emulate(struct trapframe *tf, struct opc_disasm((vaddr_t)(tf->tf_srr0), insn.i_int); } #endif -#if defined(PPC_IBM4XX) && defined(DDB) && defined(DEBUG) - /* - * retry an illegal insn once due to cache issues. - */ - static int lastill = 0; - if (lastill == tf->tf_srr0) { - if (fpe_debug & FPE_EX) -Debugger(); - } - lastill = tf->tf_srr0; -#endif /* PPC_IBM4XX && DDB && DEBUG */ return false; } }
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 04:31:06 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: fpu_dumpfpn(): Add KASSERT to check argument != NULL. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.21 src/sys/arch/powerpc/fpu/fpu_emu.c:1.22 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.21 Sat Jun 27 04:18:57 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Sat Jun 27 04:31:06 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.21 2020/06/27 04:18:57 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.22 2020/06/27 04:31:06 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.21 2020/06/27 04:18:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.22 2020/06/27 04:31:06 rin Exp $"); #include "opt_ddb.h" @@ -163,6 +163,8 @@ fpu_dumpfpn(struct fpn *fp) "SNAN", "QNAN", "ZERO", "NUM", "INF" }; + KASSERT(fp != NULL); + printf("%s %c.%x %x %x %xE%d\n", class[fp->fp_class + 2], fp->fp_sign ? '-' : ' ', fp->fp_mant[0], fp->fp_mant[1],
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 04:29:27 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_sqrt.c Log Message: Return +INF without exception for +INF, as required by the architecture. Also, avoid NULL dereference for fpu_dumpfpn() aka DUMPFPN(). Taken from (remaining part of) FreeBSD Revision 343078: https://svnweb.freebsd.org/base?view=revision&revision=343078 To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/fpu/fpu_sqrt.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/powerpc/fpu/fpu_sqrt.c diff -u src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.8 src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.9 --- src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.8 Sat Jun 27 04:17:51 2020 +++ src/sys/arch/powerpc/fpu/fpu_sqrt.c Sat Jun 27 04:29:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_sqrt.c,v 1.8 2020/06/27 04:17:51 rin Exp $ */ +/* $NetBSD: fpu_sqrt.c,v 1.9 2020/06/27 04:29:27 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.8 2020/06/27 04:17:51 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.9 2020/06/27 04:29:27 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) @@ -230,9 +230,8 @@ fpu_sqrt(struct fpemu *fe) return (fpu_newnan(fe)); } if (ISINF(x)) { - fe->fe_cx |= FPSCR_VXSQRT; - DUMPFPN(FPE_REG, 0); - return (0); + DUMPFPN(FPE_REG, x); + return (x); } /*
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 04:24:08 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_explode.c Log Message: Remove extra newline in DPRINTF(). To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/fpu/fpu_explode.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/powerpc/fpu/fpu_explode.c diff -u src/sys/arch/powerpc/fpu/fpu_explode.c:1.8 src/sys/arch/powerpc/fpu/fpu_explode.c:1.9 --- src/sys/arch/powerpc/fpu/fpu_explode.c:1.8 Sat Jun 27 03:07:57 2020 +++ src/sys/arch/powerpc/fpu/fpu_explode.c Sat Jun 27 04:24:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_explode.c,v 1.8 2020/06/27 03:07:57 rin Exp $ */ +/* $NetBSD: fpu_explode.c,v 1.9 2020/06/27 04:24:08 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -46,7 +46,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_explode.c,v 1.8 2020/06/27 03:07:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_explode.c,v 1.9 2020/06/27 04:24:08 rin Exp $"); #include #include @@ -258,5 +258,4 @@ fpu_explode(struct fpemu *fe, struct fpn ((type == FTYPE_DBL) ? 'd' : '?'))), reg)); DUMPFPN(FPE_REG, fp); - DPRINTF(FPE_REG, ("\n")); }
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 04:18:57 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: fpu_dumpfpn(): Add missing \n in printf() format. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.20 src/sys/arch/powerpc/fpu/fpu_emu.c:1.21 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.20 Sat Jun 27 03:07:57 2020 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Sat Jun 27 04:18:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.20 2020/06/27 03:07:57 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.21 2020/06/27 04:18:57 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.20 2020/06/27 03:07:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.21 2020/06/27 04:18:57 rin Exp $"); #include "opt_ddb.h" @@ -163,7 +163,7 @@ fpu_dumpfpn(struct fpn *fp) "SNAN", "QNAN", "ZERO", "NUM", "INF" }; - printf("%s %c.%x %x %x %xE%d", class[fp->fp_class + 2], + printf("%s %c.%x %x %x %xE%d\n", class[fp->fp_class + 2], fp->fp_sign ? '-' : ' ', fp->fp_mant[0], fp->fp_mant[1], fp->fp_mant[2], fp->fp_mant[3],
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 04:17:51 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_sqrt.c Log Message: Fix typo in DPRINTF. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/fpu/fpu_sqrt.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/powerpc/fpu/fpu_sqrt.c diff -u src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.7 src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.8 --- src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.7 Sat Jun 27 03:25:28 2020 +++ src/sys/arch/powerpc/fpu/fpu_sqrt.c Sat Jun 27 04:17:51 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_sqrt.c,v 1.7 2020/06/27 03:25:28 rin Exp $ */ +/* $NetBSD: fpu_sqrt.c,v 1.8 2020/06/27 04:17:51 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.7 2020/06/27 03:25:28 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.8 2020/06/27 04:17:51 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) @@ -211,7 +211,7 @@ fpu_sqrt(struct fpemu *fe) * * Then all that remains are numbers with mantissas in [1..2). */ - DPRINTF(FPE_REG, ("fpu_sqer:\n")); + DPRINTF(FPE_REG, ("fpu_sqrt:\n")); DUMPFPN(FPE_REG, x); DPRINTF(FPE_REG, ("=>\n")); if (ISNAN(x)) {
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 03:25:28 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_sqrt.c Log Message: Set FPSCR[VXSQRT] for non-zero negative operand. Taken from (a part of) FreeBSD Revision 343078: https://svnweb.freebsd.org/base?view=revision&revision=343078 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/fpu/fpu_sqrt.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/powerpc/fpu/fpu_sqrt.c diff -u src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.6 src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.7 --- src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.6 Sat Jun 27 03:07:57 2020 +++ src/sys/arch/powerpc/fpu/fpu_sqrt.c Sat Jun 27 03:25:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_sqrt.c,v 1.6 2020/06/27 03:07:57 rin Exp $ */ +/* $NetBSD: fpu_sqrt.c,v 1.7 2020/06/27 03:25:28 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.6 2020/06/27 03:07:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.7 2020/06/27 03:25:28 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) @@ -226,6 +226,7 @@ fpu_sqrt(struct fpemu *fe) return (x); } if (x->fp_sign) { + fe->fe_cx |= FPSCR_VXSQRT; return (fpu_newnan(fe)); } if (ISINF(x)) {
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Sat Jun 27 03:07:57 UTC 2020 Modified Files: src/sys/arch/powerpc/fpu: fpu_add.c fpu_compare.c fpu_div.c fpu_emu.c fpu_explode.c fpu_implode.c fpu_mul.c fpu_sqrt.c fpu_subr.c Log Message: Sort headers. No functional changes intended. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/fpu/fpu_add.c \ src/sys/arch/powerpc/fpu/fpu_compare.c src/sys/arch/powerpc/fpu/fpu_div.c \ src/sys/arch/powerpc/fpu/fpu_mul.c src/sys/arch/powerpc/fpu/fpu_subr.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/powerpc/fpu/fpu_emu.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/fpu/fpu_explode.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/fpu/fpu_implode.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/fpu/fpu_sqrt.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/powerpc/fpu/fpu_add.c diff -u src/sys/arch/powerpc/fpu/fpu_add.c:1.4 src/sys/arch/powerpc/fpu/fpu_add.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_add.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_add.c Sat Jun 27 03:07:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_add.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_add.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -47,16 +47,16 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_add.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_add.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) #include #endif -#include #include #include +#include #include #include Index: src/sys/arch/powerpc/fpu/fpu_compare.c diff -u src/sys/arch/powerpc/fpu/fpu_compare.c:1.4 src/sys/arch/powerpc/fpu/fpu_compare.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_compare.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_compare.c Sat Jun 27 03:07:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_compare.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_compare.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -48,12 +48,12 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_compare.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_compare.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); #include -#include #include +#include #include #include Index: src/sys/arch/powerpc/fpu/fpu_div.c diff -u src/sys/arch/powerpc/fpu/fpu_div.c:1.4 src/sys/arch/powerpc/fpu/fpu_div.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_div.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_div.c Sat Jun 27 03:07:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_div.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_div.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,15 +45,15 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_div.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_div.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) #include #endif -#include #include +#include #include #include Index: src/sys/arch/powerpc/fpu/fpu_mul.c diff -u src/sys/arch/powerpc/fpu/fpu_mul.c:1.4 src/sys/arch/powerpc/fpu/fpu_mul.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_mul.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_mul.c Sat Jun 27 03:07:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_mul.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_mul.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,15 +45,15 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_mul.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_mul.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) #include #endif -#include #include +#include #include #include Index: src/sys/arch/powerpc/fpu/fpu_subr.c diff -u src/sys/arch/powerpc/fpu/fpu_subr.c:1.4 src/sys/arch/powerpc/fpu/fpu_subr.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_subr.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_subr.c Sat Jun 27 03:07:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_subr.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_subr.c,v 1.5 2020/06/27 03:07:57 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,16 +45,16 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_subr.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_subr.c,v 1.5 2020/06/27 03:07:57 rin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) #include #endif -#include #include #include +#include #include #include Index: src/sys/arch/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.19 src/sys/arch/powerpc/fpu/fpu_emu.c:1.20 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.19 Wed Dec 28 10:5
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Dec 28 10:52:30 UTC 2016 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: PR port-powerpc/51368: powerpc FPU emulation fails for single precision floating point arithmetic For single precision instruction, calculate first in double precision, and then round it. With this fix, single precision arithmetic gets sane on ibm4xx and booke. Taken from FreeBSD commit r258250: https://svnweb.freebsd.org/base?view=revision&revision=258250 Ok matt and simonb. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.18 src/sys/arch/powerpc/fpu/fpu_emu.c:1.19 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.18 Thu Dec 15 11:32:03 2016 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Wed Dec 28 10:52:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.18 2016/12/15 11:32:03 rin Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.19 2016/12/28 10:52:30 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.18 2016/12/15 11:32:03 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.19 2016/12/28 10:52:30 rin Exp $"); #include "opt_ddb.h" @@ -626,9 +626,11 @@ fpu_execute(struct trapframe *tf, struct rb = instr.i_a.i_frb; rc = instr.i_a.i_frc; - type = FTYPE_SNG; - if (instr.i_any.i_opcd & 0x4) -type = FTYPE_DBL; + /* + * All arithmetic operations work on registers, which + * are stored as doubles. + */ + type = FTYPE_DBL; switch ((unsigned int)instr.i_a.i_xo) { case OPC59_FDIVS: FPU_EMU_EVCNT_INCR(fdiv); @@ -745,6 +747,13 @@ fpu_execute(struct trapframe *tf, struct return (NOTFPU); break; } + + /* If the instruction was single precision, round */ + if (!(instr.i_any.i_opcd & 0x4)) { +fpu_implode(fe, fp, FTYPE_SNG, + (u_int *)&fs->fpreg[rt]); +fpu_explode(fe, fp = &fe->fe_f1, FTYPE_SNG, rt); + } } } else { return (NOTFPU);
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Wed Dec 28 10:30:04 UTC 2016 Modified Files: src/sys/arch/powerpc/fpu: fpu_explode.c Log Message: - add missing default from FreeBSD - remove duplicate panic pointed out by matt To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/fpu/fpu_explode.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/powerpc/fpu/fpu_explode.c diff -u src/sys/arch/powerpc/fpu/fpu_explode.c:1.6 src/sys/arch/powerpc/fpu/fpu_explode.c:1.7 --- src/sys/arch/powerpc/fpu/fpu_explode.c:1.6 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_explode.c Wed Dec 28 10:30:04 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_explode.c,v 1.6 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_explode.c,v 1.7 2016/12/28 10:30:04 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -46,7 +46,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_explode.c,v 1.6 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_explode.c,v 1.7 2016/12/28 10:30:04 rin Exp $"); #include #include @@ -235,7 +235,7 @@ fpu_explode(struct fpemu *fe, struct fpn s = fpu_dtof(fp, s, space[1]); break; - panic("fpu_explode"); + default: panic("fpu_explode: invalid type %d", type); }
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: rin Date: Thu Dec 15 11:32:03 UTC 2016 Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.c Log Message: Fix build without DDB. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/powerpc/fpu/fpu_emu.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/powerpc/fpu/fpu_emu.c diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.17 src/sys/arch/powerpc/fpu/fpu_emu.c:1.18 --- src/sys/arch/powerpc/fpu/fpu_emu.c:1.17 Tue Aug 12 20:27:10 2014 +++ src/sys/arch/powerpc/fpu/fpu_emu.c Thu Dec 15 11:32:03 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.c,v 1.17 2014/08/12 20:27:10 joerg Exp $ */ +/* $NetBSD: fpu_emu.c,v 1.18 2016/12/15 11:32:03 rin Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -76,7 +76,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.17 2014/08/12 20:27:10 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.18 2016/12/15 11:32:03 rin Exp $"); #include "opt_ddb.h" @@ -248,14 +248,14 @@ fpu_emulate(struct trapframe *tf, struct case NOTFPU: default: DPRINTF(FPE_EX, ("fpu_emulate: SIGILL\n")); -#ifdef DEBUG +#if defined(DDB) && defined(DEBUG) if (fpe_debug & FPE_EX) { printf("fpu_emulate: illegal insn %x at %p:", insn.i_int, (void *) (tf->tf_srr0)); opc_disasm((vaddr_t)(tf->tf_srr0), insn.i_int); } #endif -#if defined(PPC_IBM4XX) && defined(DEBUG) +#if defined(PPC_IBM4XX) && defined(DDB) && defined(DEBUG) /* * retry an illegal insn once due to cache issues. */ @@ -265,7 +265,7 @@ fpu_emulate(struct trapframe *tf, struct Debugger(); } lastill = tf->tf_srr0; -#endif /* PPC_IBM4XX && DEBUG */ +#endif /* PPC_IBM4XX && DDB && DEBUG */ return false; } }
CVS commit: src/sys/arch/powerpc/fpu
Module Name:src Committed By: martin Date: Tue Feb 25 14:16:25 UTC 2014 Modified Files: src/sys/arch/powerpc/fpu: fpu_sqrt.c Log Message: Mark a temporary as __USEd To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/fpu/fpu_sqrt.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/powerpc/fpu/fpu_sqrt.c diff -u src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.4 src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.5 --- src/sys/arch/powerpc/fpu/fpu_sqrt.c:1.4 Sun Dec 11 12:18:42 2005 +++ src/sys/arch/powerpc/fpu/fpu_sqrt.c Tue Feb 25 14:16:25 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_sqrt.c,v 1.4 2005/12/11 12:18:42 christos Exp $ */ +/* $NetBSD: fpu_sqrt.c,v 1.5 2014/02/25 14:16:25 martin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.4 2005/12/11 12:18:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fpu_sqrt.c,v 1.5 2014/02/25 14:16:25 martin Exp $"); #include #if defined(DIAGNOSTIC)||defined(DEBUG) @@ -381,7 +381,7 @@ fpu_sqrt(struct fpemu *fe) bit = 1 << 31; EVEN_DOUBLE; t3 = bit; - FPU_SUBS(d3, x3, t3); + FPU_SUBS(d3, x3, t3); __USE(d3); FPU_SUBCS(d2, x2, t2); FPU_SUBCS(d1, x1, t1); FPU_SUBC(d0, x0, t0);