stacktrace.h 805 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * arch/xtensa/include/asm/stacktrace.h
  3. *
  4. * This file is subject to the terms and conditions of the GNU General Public
  5. * License. See the file "COPYING" in the main directory of this archive
  6. * for more details.
  7. *
  8. * Copyright (C) 2001 - 2013 Tensilica Inc.
  9. */
  10. #ifndef _XTENSA_STACKTRACE_H
  11. #define _XTENSA_STACKTRACE_H
  12. #include <linux/sched.h>
  13. struct stackframe {
  14. unsigned long pc;
  15. unsigned long sp;
  16. };
  17. static __always_inline unsigned long *stack_pointer(struct task_struct *task)
  18. {
  19. unsigned long *sp;
  20. if (!task || task == current)
  21. __asm__ __volatile__ ("mov %0, a1\n" : "=a"(sp));
  22. else
  23. sp = (unsigned long *)task->thread.sp;
  24. return sp;
  25. }
  26. void walk_stackframe(unsigned long *sp,
  27. int (*fn)(struct stackframe *frame, void *data),
  28. void *data);
  29. #endif /* _XTENSA_STACKTRACE_H */