Lines Matching +full:c +full:- +full:sky
1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd.
18 if (unlikely(frame->fp < low || frame->fp > high)) in unwind_frame_kernel()
19 return -EPERM; in unwind_frame_kernel()
21 if (kstack_end((void *)frame->fp) || frame->fp & 0x3) in unwind_frame_kernel()
22 return -EPERM; in unwind_frame_kernel()
24 *frame = *(struct stackframe *)frame->fp; in unwind_frame_kernel()
26 if (__kernel_text_address(frame->lr)) { in unwind_frame_kernel()
29 frame->lr = ftrace_graph_ret_addr(NULL, &graph, frame->lr, in unwind_frame_kernel()
39 perf_callchain_store(entry, fr->lr); in walk_stackframe()
76 * kernel/events/core.c:perf_prepare_sample()
79 * $ perf record -e cpu-clock --call-graph fp ./program
80 * $ perf report --call-graph
82 * On C-SKY platform, the program being sampled and the C library
83 * need to be compiled with * -mbacktrace, otherwise the user
91 fp = regs->regs[4]; in perf_callchain_user()
92 perf_callchain_store(entry, regs->pc); in perf_callchain_user()
96 * not saved inside frame on C-SKY, so get lr from pt_regs in perf_callchain_user()
100 fp = user_backtrace(entry, fp, regs->lr); in perf_callchain_user()
102 while (fp && !(fp & 0x3) && entry->nr < entry->max_stack) in perf_callchain_user()
111 fr.fp = regs->regs[4]; in perf_callchain_kernel()
112 fr.lr = regs->lr; in perf_callchain_kernel()