csky: Add perf_arch_fetch_caller_regs support

In trace events as tracepoints context are not able to
be retrieve with task_pt_regs. Without arch caller regs
support the pt_regs context will be all zero, perf can
not parsing the callchain and resolving the symbols
correctly, some time will even get into deadlock
while handling the page fault, eg:

perf kmem —page record ls

Changelog
 - Add test case cmd in comment
 - Use regs_fp(regs) which is defined in abi/regdef.h

Signed-off-by: Mao Han <han_mao@c-sky.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
This commit is contained in:
Mao Han 2019-04-10 10:27:10 +08:00 committed by Guo Ren
parent 981bbf274b
commit b4bf274198
3 changed files with 10 additions and 0 deletions

View File

@ -6,6 +6,7 @@
#define syscallid r1
#define regs_syscallid(regs) regs->regs[9]
#define regs_fp(regs) regs->regs[2]
/*
* PSR format:

View File

@ -6,6 +6,7 @@
#define syscallid r7
#define regs_syscallid(regs) regs->regs[3]
#define regs_fp(regs) regs->regs[4]
/*
* PSR format:

View File

@ -4,4 +4,12 @@
#ifndef __ASM_CSKY_PERF_EVENT_H
#define __ASM_CSKY_PERF_EVENT_H
#include <abi/regdef.h>
#define perf_arch_fetch_caller_regs(regs, __ip) { \
(regs)->pc = (__ip); \
regs_fp(regs) = (unsigned long) __builtin_frame_address(0); \
asm volatile("mov %0, sp\n":"=r"((regs)->usp)); \
}
#endif /* __ASM_PERF_EVENT_ELF_H */