aboutsummaryrefslogtreecommitdiff
path: root/sys/arm/arm/vfp.c
diff options
context:
space:
mode:
authorOleksandr Tymoshenko <gonzo@FreeBSD.org>2015-11-01 21:59:56 +0000
committerOleksandr Tymoshenko <gonzo@FreeBSD.org>2015-11-01 21:59:56 +0000
commit0265aa0a15637957b732f45a37fba638e1ccd3c5 (patch)
tree71f17993e6c1d1296fde99e954e8842876c45217 /sys/arm/arm/vfp.c
parentbb3d23fd35c00a652a92e4249477e5240f3a4180 (diff)
downloadsrc-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.c4
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;