diff options
author | Namhyung Kim <namhyung@kernel.org> | 2024-09-09 14:42:50 -0700 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2024-09-10 17:32:47 -0300 |
commit | c8b9358778a82534251dc93ebc4601246d5ae04e (patch) | |
tree | 4c0e0c5e242c3ff9554bebb9b79e514d28a622ea /tools/perf | |
parent | 332f60ac052f5d7bfc646502f377c600986f10c2 (diff) | |
download | linux-c8b9358778a82534251dc93ebc4601246d5ae04e.tar.gz linux-c8b9358778a82534251dc93ebc4601246d5ae04e.tar.bz2 linux-c8b9358778a82534251dc93ebc4601246d5ae04e.zip |
perf annotate: Treat 'call' instruction as stack operation
I found some portion of mem-store events sampled on CALL instruction
which has no memory access. But it actually saves a return address
into stack. It should be considered as a stack operation like RET
instruction.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240909214251.3033827-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/annotate.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 4990c70b1794..1a347a711dcf 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -2474,6 +2474,7 @@ static bool is_stack_operation(struct arch *arch, struct disasm_line *dl) if (arch__is(arch, "x86")) { if (!strncmp(dl->ins.name, "push", 4) || !strncmp(dl->ins.name, "pop", 3) || + !strncmp(dl->ins.name, "call", 4) || !strncmp(dl->ins.name, "ret", 3)) return true; } |