Module Name: src
Committed By: tsutsui
Date: Sat Feb 26 15:41:32 UTC 2011
Modified Files:
src/sys/arch/mips/mips: fp.S mips_fputrap.c
Log Message:
Use mips_fpexcept() instead of fpemul_trapsignal() to deliver SIGFPE,
and remove now unused fpemul_trapsignal() introduced for PR port-mips/26410.
Fixes PR port-mips/35326 and now t_except unmasked tests in
/usr/tests/lib/libc/ieeefp pass.
Note t_subnormal double test still fails as mentioned in PR port-mips/44639.
To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/mips/mips/fp.S
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/mips/mips/mips_fputrap.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/mips/mips/fp.S
diff -u src/sys/arch/mips/mips/fp.S:1.42 src/sys/arch/mips/mips/fp.S:1.43
--- src/sys/arch/mips/mips/fp.S:1.42 Sat Feb 26 15:01:31 2011
+++ src/sys/arch/mips/mips/fp.S Sat Feb 26 15:41:32 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: fp.S,v 1.42 2011/02/26 15:01:31 tsutsui Exp $ */
+/* $NetBSD: fp.S,v 1.43 2011/02/26 15:41:32 tsutsui Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -2833,6 +2833,7 @@
#nop
INT_S a2, PCB_FPREGS+FRAME_FSR(v0)
#endif
+ move a3, a2 # fpustat
REG_L a1, CALLFRAME_FRAME(sp) # frame
REG_L a2, CALLFRAME_CAUSE(sp) # cause
REG_L ra, CALLFRAME_RA(sp)
@@ -4572,10 +4573,9 @@
REG_S a2, TF_REG_CAUSE(a1)
REG_EPILOGUE
- move a2, a0 # code = instruction
+ move a1, a3 # fpustat
move a0, MIPS_CURLWP # get current lwp
- li a1, SIGFPE
- j _C_LABEL(fpemul_trapsignal)
+ j _C_LABEL(mips_fpuexcept)
END(fpemul_sigfpe)
#ifdef FPEMUL
@@ -4587,9 +4587,8 @@
REG_S a2, TF_REG_CAUSE(a1)
REG_EPILOGUE
- move a2, a0 # code = instruction
+ move a1, a3 # fpustat
move a0, MIPS_CURLWP # get current lwp
- li a1, SIGFPE
- j _C_LABEL(fpemul_trapsignal)
+ j _C_LABEL(mips_fpuexcept)
END(mips_emul_sigfpe)
#endif
Index: src/sys/arch/mips/mips/mips_fputrap.c
diff -u src/sys/arch/mips/mips/mips_fputrap.c:1.9 src/sys/arch/mips/mips/mips_fputrap.c:1.10
--- src/sys/arch/mips/mips/mips_fputrap.c:1.9 Sat Feb 26 11:05:54 2011
+++ src/sys/arch/mips/mips/mips_fputrap.c Sat Feb 26 15:41:32 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: mips_fputrap.c,v 1.9 2011/02/26 11:05:54 tsutsui Exp $ */
+/* $NetBSD: mips_fputrap.c,v 1.10 2011/02/26 15:41:32 tsutsui Exp $ */
/*
* Copyright (c) 2004
@@ -99,22 +99,3 @@
return FPE_FLTINV;
}
#endif /* FPEMUL || !NOFPU */
-
-void fpemul_trapsignal(struct lwp *, unsigned int, unsigned int);
-
-void
-fpemul_trapsignal(struct lwp *l, unsigned int sig, unsigned int code)
-{
- ksiginfo_t ksi;
-
-#ifdef FPEMUL_DEBUG
- printf("%s(%x,%x,%#"PRIxREGISTER")\n",
- __func__, sig, code, l->l_md.md_utf->tf_regs[_R_PC]);
-#endif
-
- KSI_INIT_TRAP(&ksi);
- ksi.ksi_signo = sig;
- ksi.ksi_code = 1; /* XXX */
- ksi.ksi_trap = code;
- (*l->l_proc->p_emul->e_trapsignal)(l, &ksi);
-}