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);
-}

Reply via email to