diff options
| author | Justin Hibbits <jhibbits@FreeBSD.org> | 2017-06-09 20:26:42 +0000 |
|---|---|---|
| committer | Justin Hibbits <jhibbits@FreeBSD.org> | 2017-06-09 20:26:42 +0000 |
| commit | 880870b41a31eb6c79be2071861ca4edc3cc7c1c (patch) | |
| tree | 91049cc202feaa74d9f0ff462b16f036592e0d80 /sys/cddl | |
| parent | f67b5de754c9682fe9e69abe60f78590ea124726 (diff) | |
Notes
Diffstat (limited to 'sys/cddl')
| -rw-r--r-- | sys/cddl/dev/dtrace/powerpc/dtrace_subr.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c b/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c index 6cb755f30513..ed171f1135e9 100644 --- a/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c @@ -267,6 +267,7 @@ dtrace_gethrestime(void) int dtrace_trap(struct trapframe *frame, u_int type) { + uint16_t nofault; /* * A trap can occur while DTrace executes a probe. Before @@ -277,7 +278,11 @@ dtrace_trap(struct trapframe *frame, u_int type) * * Check if DTrace has enabled 'no-fault' mode: */ - if ((cpu_core[curcpu].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT) != 0) { + sched_pin(); + nofault = cpu_core[curcpu].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT; + sched_unpin(); + if (nofault) { + KASSERT((frame->srr1 & PSL_EE) == 0, ("interrupts enabled")); /* * There are only a couple of trap types that are expected. * All the rest will be handled in the usual way. |
