diff options
author | Oleksandr Tymoshenko <gonzo@FreeBSD.org> | 2015-11-01 21:59:56 +0000 |
---|---|---|
committer | Oleksandr Tymoshenko <gonzo@FreeBSD.org> | 2015-11-01 21:59:56 +0000 |
commit | 0265aa0a15637957b732f45a37fba638e1ccd3c5 (patch) | |
tree | 71f17993e6c1d1296fde99e954e8842876c45217 /sys/arm/arm/vfp.c | |
parent | bb3d23fd35c00a652a92e4249477e5240f3a4180 (diff) | |
download | src-0265aa0a15637957b732f45a37fba638e1ccd3c5.tar.gz src-0265aa0a15637957b732f45a37fba638e1ccd3c5.zip |
Treat synchronous VFP exception just like aynchronous: as an FP exception,
not as illegal instruction
Notes
Notes:
svn path=/head/; revision=290243
Diffstat (limited to 'sys/arm/arm/vfp.c')
-rw-r--r-- | sys/arm/arm/vfp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/arm/arm/vfp.c b/sys/arm/arm/vfp.c index c149aafa78d2..80a7bd09782e 100644 --- a/sys/arm/arm/vfp.c +++ b/sys/arm/arm/vfp.c @@ -179,12 +179,12 @@ vfp_bounce(u_int addr, u_int insn, struct trapframe *frame, int code) 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; |