summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2010-03-18 16:05:13 +1100
committerIngo Molnar <mingo@elte.hu>2010-03-18 06:48:29 +0100
commit9eff26ea48bfbe2885b158742a7512a097ec911b (patch)
treea914f959b78bdf4ee9eca897a743d727c27faf4f /tools
parent00909e955125e90a6ebb34671c56c4c851e62951 (diff)
downloadlinux-9eff26ea48bfbe2885b158742a7512a097ec911b.tar.gz
linux-9eff26ea48bfbe2885b158742a7512a097ec911b.tar.bz2
linux-9eff26ea48bfbe2885b158742a7512a097ec911b.zip
powerpc/perf_events: Fix call-graph recording, add perf_arch_fetch_caller_regs
This implements a powerpc version of perf_arch_fetch_caller_regs to get correct call-graphs. It's implemented in assembly because that way we can be sure there isn't a stack frame for perf_arch_fetch_caller_regs. If it was in C, gcc might or might not create a stack frame for it, which would affect the number of levels we have to skip. With this, we see results from perf record -e lock:lock_acquire like this: # Samples: 24878 # # Overhead Command Shared Object Symbol # ........ .............. ................. ...... # 14.99% perf [kernel.kallsyms] [k] ._raw_spin_lock | --- ._raw_spin_lock | |--25.00%-- .alloc_fd | (nil) | | | |--50.00%-- .anon_inode_getfd | | .sys_perf_event_open | | syscall_exit | | syscall | | create_counter | | __cmd_record | | run_builtin | | main | | 0xfd2e704 | | 0xfd2e8c0 | | (nil) ... etc. Signed-off-by: Paul Mackerras <paulus@samba.org> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: anton@samba.org Cc: linuxppc-dev@ozlabs.org Cc: Peter Zijlstra <peterz@infradead.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <20100318050513.GA6575@drongo> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions