aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2021-01-13 11:08:19 +0000
committerAndrew Turner <andrew@FreeBSD.org>2021-03-03 14:18:03 +0000
commit28d945204ea1014d7de6906af8470ed8b3311335 (patch)
tree34ce7d6f3c96679c9879539468a28a7690311080 /sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
parent48ba9b2669e6a92a3254ec34461d0d86fb20b9f4 (diff)
downloadsrc-28d945204ea1014d7de6906af8470ed8b3311335.tar.gz
src-28d945204ea1014d7de6906af8470ed8b3311335.zip
Handle functions that use a nop in the arm64 fbt
To trace leaf asm functions we can insert a single nop instruction as the first instruction in a function and trigger off this. Reviewed by: gnn Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D28132
Diffstat (limited to 'sys/cddl/dev/dtrace/aarch64/dtrace_subr.c')
-rw-r--r--sys/cddl/dev/dtrace/aarch64/dtrace_subr.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c b/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
index 9bf9f0798bb5..58d33511560b 100644
--- a/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
+++ b/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
@@ -314,6 +314,11 @@ dtrace_invop_start(struct trapframe *frame)
return (0);
}
+ if (invop == NOP_INSTR) {
+ frame->tf_elr += INSN_SIZE;
+ return (0);
+ }
+
if ((invop & B_MASK) == B_INSTR) {
data = (invop & B_DATA_MASK);
/* The data is the number of 4-byte words to change the pc */