diff options
author | Bryan Cantrill <bryan@joyent.com> | 2016-06-07 21:21:23 +0000 |
---|---|---|
committer | Bryan Cantrill <bryan@joyent.com> | 2016-06-07 21:21:23 +0000 |
commit | 8a5ff7873220bd2725876b6ef7fdd2bceff60dd3 (patch) | |
tree | fcaf5b610edf83f00f0a05f66ca2e9fc3ac74c19 /usr/src/uts/common/dtrace/dtrace.c | |
parent | 723c8a093c1a79bf03793a2b34befd65bf365737 (diff) | |
download | illumos-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.c | 8 |
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; |