Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Nov 2015 21:59:57 +0000 (UTC)
From:      Oleksandr Tymoshenko <gonzo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r290243 - in head/sys/arm: arm include
Message-ID:  <201511012159.tA1LxvZq041599@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gonzo
Date: Sun Nov  1 21:59:56 2015
New Revision: 290243
URL: https://svnweb.freebsd.org/changeset/base/290243

Log:
  Treat synchronous VFP exception just like aynchronous: as an FP exception,
  not as illegal instruction

Modified:
  head/sys/arm/arm/vfp.c
  head/sys/arm/include/vfp.h

Modified: head/sys/arm/arm/vfp.c
==============================================================================
--- head/sys/arm/arm/vfp.c	Sun Nov  1 21:20:29 2015	(r290242)
+++ head/sys/arm/arm/vfp.c	Sun Nov  1 21:59:56 2015	(r290243)
@@ -179,12 +179,12 @@ vfp_bounce(u_int addr, u_int insn, struc
 	fpexc = fmrx(fpexc);
 	if (fpexc & VFPEXC_EN) {
 		/* Clear any exceptions */
-		fmxr(fpexc, fpexc & ~(VFPEXC_EX | VFPEXC_FP2V));
+		fmxr(fpexc, fpexc & ~(VFPEXC_EX | VFPEXC_DEX | VFPEXC_FP2V));
 
 		/* kill the process - we do not handle emulation */
 		critical_exit();
 
-		if (fpexc & VFPEXC_EX) {
+		if (fpexc & (VFPEXC_EX | VFPEXC_DEX)) {
 			/* We have an exception, signal a SIGFPE */
 			ksiginfo_init_trap(&ksi);
 			ksi.ksi_signo = SIGFPE;

Modified: head/sys/arm/include/vfp.h
==============================================================================
--- head/sys/arm/include/vfp.h	Sun Nov  1 21:20:29 2015	(r290242)
+++ head/sys/arm/include/vfp.h	Sun Nov  1 21:59:56 2015	(r290243)
@@ -92,6 +92,7 @@
 /* VFPEXC */
 #define	VFPEXC_EX 		(0x80000000)	/* exception v1 v2 */
 #define	VFPEXC_EN		(0x40000000)	/* vfp enable */
+#define	VFPEXC_DEX		(0x20000000)	/* Synchronous exception */
 #define	VFPEXC_FP2V		(0x10000000)	/* FPINST2 valid */
 #define	VFPEXC_INV		(0x00000080)	/* Input exception */
 #define	VFPEXC_UFC		(0x00000008)	/* Underflow exception */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201511012159.tA1LxvZq041599>