aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl
diff options
context:
space:
mode:
authorJustin Hibbits <jhibbits@FreeBSD.org>2017-06-09 20:26:42 +0000
committerJustin Hibbits <jhibbits@FreeBSD.org>2017-06-09 20:26:42 +0000
commit880870b41a31eb6c79be2071861ca4edc3cc7c1c (patch)
tree91049cc202feaa74d9f0ff462b16f036592e0d80 /sys/cddl
parentf67b5de754c9682fe9e69abe60f78590ea124726 (diff)
Notes
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/dev/dtrace/powerpc/dtrace_subr.c7
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.