Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #ifndef __ASM_STACKTRACE_H 3 : : #define __ASM_STACKTRACE_H 4 : : 5 : : #include <asm/ptrace.h> 6 : : 7 : : struct stackframe { 8 : : /* 9 : : * FP member should hold R7 when CONFIG_THUMB2_KERNEL is enabled 10 : : * and R11 otherwise. 11 : : */ 12 : : unsigned long fp; 13 : : unsigned long sp; 14 : : unsigned long lr; 15 : : unsigned long pc; 16 : : }; 17 : : 18 : : static __always_inline 19 : : void arm_get_current_stackframe(struct pt_regs *regs, struct stackframe *frame) 20 : : { 21 : 0 : frame->fp = frame_pointer(regs); 22 : 0 : frame->sp = regs->ARM_sp; 23 : 0 : frame->lr = regs->ARM_lr; 24 : 0 : frame->pc = regs->ARM_pc; 25 : : } 26 : : 27 : : extern int unwind_frame(struct stackframe *frame); 28 : : extern void walk_stackframe(struct stackframe *frame, 29 : : int (*fn)(struct stackframe *, void *), void *data); 30 : : 31 : : #endif /* __ASM_STACKTRACE_H */