diff options
author | Andrew Turner <andrew@FreeBSD.org> | 2021-01-13 11:08:19 +0000 |
---|---|---|
committer | Andrew Turner <andrew@FreeBSD.org> | 2021-03-03 14:18:03 +0000 |
commit | 28d945204ea1014d7de6906af8470ed8b3311335 (patch) | |
tree | 34ce7d6f3c96679c9879539468a28a7690311080 /sys/cddl/dev/dtrace/aarch64/dtrace_subr.c | |
parent | 48ba9b2669e6a92a3254ec34461d0d86fb20b9f4 (diff) | |
download | src-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.c | 5 |
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 */ |