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 */
40