aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Hibbits <jhibbits@FreeBSD.org>2018-11-21 16:47:11 +0000
committerJustin Hibbits <jhibbits@FreeBSD.org>2018-11-21 16:47:11 +0000
commitcfebc0faa7cf1377d7c419e9e2ce889f43ffb68b (patch)
treef32674d9bd5712d9a0c6b00979c24ac92ca1fbeb
parent0161256ccc89660285140ea2056441ec8e882831 (diff)
downloadsrc-cfebc0faa7cf1377d7c419e9e2ce889f43ffb68b.tar.gz
src-cfebc0faa7cf1377d7c419e9e2ce889f43ffb68b.zip
DTrace/powerpc: Fix FBT return probes
The FBT fuction boundary prober was setting one return probe marker value, but the dtrace handler was expecting another. This causes a hang when tracing return probes.
Notes
Notes: svn path=/head/; revision=340726
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h11
-rw-r--r--sys/cddl/dev/fbt/powerpc/fbt_isa.c2
2 files changed, 6 insertions, 7 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h b/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
index efbf36e86339..b474f91ce01d 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
@@ -2435,12 +2435,11 @@ extern void dtrace_helpers_destroy(proc_t *);
#elif defined(__powerpc__)
-#define DTRACE_INVOP_RET 1
-#define DTRACE_INVOP_BCTR 2
-#define DTRACE_INVOP_BLR 3
-#define DTRACE_INVOP_JUMP 4
-#define DTRACE_INVOP_MFLR_R0 5
-#define DTRACE_INVOP_NOP 6
+#define DTRACE_INVOP_BCTR 1
+#define DTRACE_INVOP_BLR 2
+#define DTRACE_INVOP_JUMP 3
+#define DTRACE_INVOP_MFLR_R0 4
+#define DTRACE_INVOP_NOP 5
#elif defined(__arm__)
diff --git a/sys/cddl/dev/fbt/powerpc/fbt_isa.c b/sys/cddl/dev/fbt/powerpc/fbt_isa.c
index 6072737fa1e2..8843e2aafe12 100644
--- a/sys/cddl/dev/fbt/powerpc/fbt_isa.c
+++ b/sys/cddl/dev/fbt/powerpc/fbt_isa.c
@@ -221,7 +221,7 @@ again:
if (*instr == FBT_BCTR)
fbt->fbtp_rval = DTRACE_INVOP_BCTR;
else if (*instr == FBT_BLR)
- fbt->fbtp_rval = DTRACE_INVOP_RET;
+ fbt->fbtp_rval = DTRACE_INVOP_BLR;
else
fbt->fbtp_rval = DTRACE_INVOP_JUMP;