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
*/
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"