aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2022-11-01 04:14:30 +0000
committerMark Johnston <markj@FreeBSD.org>2022-11-01 04:17:48 +0000
commit60013d9c5024c86f4c7027ed2b18856517e8a05c (patch)
treeda54aa25e1385309072d18068010f04144014a7c /sys/cddl
parente7fe037310eda2018da6dde78e3be525d71bed03 (diff)
downloadsrc-60013d9c5024c86f4c7027ed2b18856517e8a05c.tar.gz
src-60013d9c5024c86f4c7027ed2b18856517e8a05c.zip
dtrace: Fix the i386 FBT build
Reported by: Jenkins Fixes: 0e69c959150c ("dtrace: Fix up %rip for invop probes on x86")
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/dev/fbt/x86/fbt_isa.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/cddl/dev/fbt/x86/fbt_isa.c b/sys/cddl/dev/fbt/x86/fbt_isa.c
index b05ae4cb2c44..481e65bd761b 100644
--- a/sys/cddl/dev/fbt/x86/fbt_isa.c
+++ b/sys/cddl/dev/fbt/x86/fbt_isa.c
@@ -89,7 +89,11 @@ fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t scratch __unused)
* Report the address of the breakpoint for the benefit
* of consumers fetching register values with regs[].
*/
+#ifdef __i386__
+ frame->tf_eip--;
+#else
frame->tf_rip--;
+#endif
for (; fbt != NULL; fbt = fbt->fbtp_tracenext) {
ASSERT(fbt->fbtp_rval == fbtrval);
if (fbt->fbtp_roffset == 0) {
@@ -150,7 +154,11 @@ fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t scratch __unused)
}
}
/* Advance to the instruction following the breakpoint. */
+#ifdef __i386__
+ frame->tf_eip++;
+#else
frame->tf_rip++;
+#endif
return (fbtrval);
}