stacktrace.h 742 B

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