1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2008-2018 Andes Technology Corporation */
3
4 #ifndef __ASM_STACKTRACE_H
5 #define __ASM_STACKTRACE_H
6
7 /* Kernel callchain */
8 struct stackframe {
9 unsigned long fp;
10 unsigned long sp;
11 unsigned long lp;
12 };
13
14 /*
15 * struct frame_tail: User callchain
16 * IMPORTANT:
17 * This struct is used for call-stack walking,
18 * the order and types matters.
19 * Do not use array, it only stores sizeof(pointer)
20 *
21 * The details can refer to arch/arm/kernel/perf_event.c
22 */
23 struct frame_tail {
24 unsigned long stack_fp;
25 unsigned long stack_lp;
26 };
27
28 /* For User callchain with optimize for size */
29 struct frame_tail_opt_size {
30 unsigned long stack_r6;
31 unsigned long stack_fp;
32 unsigned long stack_gp;
33 unsigned long stack_lp;
34 };
35
36 extern void
37 get_real_ret_addr(unsigned long *addr, struct task_struct *tsk, int *graph);
38
39 #endif /* __ASM_STACKTRACE_H */