Commit b4bf2741 authored by Mao Han's avatar Mao Han Committed by Guo Ren
Browse files

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: default avatarMao Han <han_mao@c-sky.com>
Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
parent 981bbf27
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@

#define syscallid	r1
#define regs_syscallid(regs) regs->regs[9]
#define regs_fp(regs) regs->regs[2]

/*
 * PSR format:
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@

#define syscallid	r7
#define regs_syscallid(regs) regs->regs[3]
#define regs_fp(regs) regs->regs[4]

/*
 * PSR format:
+8 −0
Original line number Diff line number Diff line
@@ -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 */