| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* Copyright (C) 2008-2018 Andes Technology Corporation */ |
| |
| #ifndef __ASM_STACKTRACE_H |
| #define __ASM_STACKTRACE_H |
| |
| /* Kernel callchain */ |
| struct stackframe { |
| unsigned long fp; |
| unsigned long sp; |
| unsigned long lp; |
| }; |
| |
| /* |
| * struct frame_tail: User callchain |
| * IMPORTANT: |
| * This struct is used for call-stack walking, |
| * the order and types matters. |
| * Do not use array, it only stores sizeof(pointer) |
| * |
| * The details can refer to arch/arm/kernel/perf_event.c |
| */ |
| struct frame_tail { |
| unsigned long stack_fp; |
| unsigned long stack_lp; |
| }; |
| |
| /* For User callchain with optimize for size */ |
| struct frame_tail_opt_size { |
| unsigned long stack_r6; |
| unsigned long stack_fp; |
| unsigned long stack_gp; |
| unsigned long stack_lp; |
| }; |
| |
| extern void |
| get_real_ret_addr(unsigned long *addr, struct task_struct *tsk, int *graph); |
| |
| #endif /* __ASM_STACKTRACE_H */ |