summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/dtrace/dtrace.c
diff options
context:
space:
mode:
authorBryan Cantrill <bryan@joyent.com>2016-06-07 21:21:23 +0000
committerBryan Cantrill <bryan@joyent.com>2016-06-07 21:21:23 +0000
commit8a5ff7873220bd2725876b6ef7fdd2bceff60dd3 (patch)
treefcaf5b610edf83f00f0a05f66ca2e9fc3ac74c19 /usr/src/uts/common/dtrace/dtrace.c
parent723c8a093c1a79bf03793a2b34befd65bf365737 (diff)
downloadillumos-joyent-8a5ff7873220bd2725876b6ef7fdd2bceff60dd3.tar.gz
OS-5444 T_ZERODIV should set CPU_DTRACE_DIVZERO when CPU_DTRACE_NOFAULT set
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Diffstat (limited to 'usr/src/uts/common/dtrace/dtrace.c')
-rw-r--r--usr/src/uts/common/dtrace/dtrace.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/usr/src/uts/common/dtrace/dtrace.c b/usr/src/uts/common/dtrace/dtrace.c
index fc0206da29..ba87747b79 100644
--- a/usr/src/uts/common/dtrace/dtrace.c
+++ b/usr/src/uts/common/dtrace/dtrace.c
@@ -5759,8 +5759,10 @@ dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
regs[rd] = 0;
*flags |= CPU_DTRACE_DIVZERO;
} else {
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT);
regs[rd] = (int64_t)regs[r1] /
(int64_t)regs[r2];
+ DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT);
}
break;
@@ -5769,7 +5771,9 @@ dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
regs[rd] = 0;
*flags |= CPU_DTRACE_DIVZERO;
} else {
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT);
regs[rd] = regs[r1] / regs[r2];
+ DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT);
}
break;
@@ -5778,8 +5782,10 @@ dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
regs[rd] = 0;
*flags |= CPU_DTRACE_DIVZERO;
} else {
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT);
regs[rd] = (int64_t)regs[r1] %
(int64_t)regs[r2];
+ DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT);
}
break;
@@ -5788,7 +5794,9 @@ dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
regs[rd] = 0;
*flags |= CPU_DTRACE_DIVZERO;
} else {
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_NOFAULT);
regs[rd] = regs[r1] % regs[r2];
+ DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT);
}
break;