Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/cddl/osnet/dev/fbt/aarch64 Count the number of arti...
details: https://anonhg.NetBSD.org/src/rev/73fdbbfa0a40
branches: trunk
changeset: 744745:73fdbbfa0a40
user: riastradh <riastradh%NetBSD.org@localhost>
date: Wed Feb 12 01:10:25 2020 +0000
description:
Count the number of artificial frames in aarch64 fbt probe correctly.
diffstat:
external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diffs (39 lines):
diff -r f45f3ceba177 -r 73fdbbfa0a40 external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c
--- a/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:10:16 2020 +0000
+++ b/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:10:25 2020 +0000
@@ -52,6 +52,17 @@
#define FBT_ENTRY "entry"
#define FBT_RETURN "return"
+/*
+ * How many artificial frames appear between dtrace_probe and the
+ * interrupted function call?
+ *
+ * fbt_invop
+ * dtrace_invop
+ * dtrace_invop_start
+ * el1_trap_exit
+ */
+#define FBT_AFRAMES 4
+
int
fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t r0)
{
@@ -152,7 +163,7 @@
#endif
fbt->fbtp_name = name;
fbt->fbtp_id = dtrace_probe_create(fbt_id, modname,
- name, FBT_ENTRY, 3, fbt);
+ name, FBT_ENTRY, FBT_AFRAMES, fbt);
fbt->fbtp_patchpoint = instr;
#ifdef __FreeBSD__
fbt->fbtp_ctl = lf;
@@ -206,7 +217,7 @@
fbt->fbtp_name = name;
if (retfbt == NULL) {
fbt->fbtp_id = dtrace_probe_create(fbt_id, modname,
- name, FBT_RETURN, 3, fbt);
+ name, FBT_RETURN, FBT_AFRAMES, fbt);
} else {
retfbt->fbtp_next = fbt;
fbt->fbtp_id = retfbt->fbtp_id;
Home |
Main Index |
Thread Index |
Old Index