linux/arch/um/include/asm/stacktrace.h
<<
>>
Prefs
   1#ifndef _ASM_UML_STACKTRACE_H
   2#define _ASM_UML_STACKTRACE_H
   3
   4#include <linux/uaccess.h>
   5#include <linux/ptrace.h>
   6
   7struct stack_frame {
   8        struct stack_frame *next_frame;
   9        unsigned long return_address;
  10};
  11
  12struct stacktrace_ops {
  13        void (*address)(void *data, unsigned long address, int reliable);
  14};
  15
  16#ifdef CONFIG_FRAME_POINTER
  17static inline unsigned long
  18get_frame_pointer(struct task_struct *task, struct pt_regs *segv_regs)
  19{
  20        if (!task || task == current)
  21                return segv_regs ? PT_REGS_BP(segv_regs) : current_bp();
  22        return KSTK_EBP(task);
  23}
  24#else
  25static inline unsigned long
  26get_frame_pointer(struct task_struct *task, struct pt_regs *segv_regs)
  27{
  28        return 0;
  29}
  30#endif
  31
  32static inline unsigned long
  33*get_stack_pointer(struct task_struct *task, struct pt_regs *segv_regs)
  34{
  35        if (!task || task == current)
  36                return segv_regs ? (unsigned long *)PT_REGS_SP(segv_regs) : current_sp();
  37        return (unsigned long *)KSTK_ESP(task);
  38}
  39
  40void dump_trace(struct task_struct *tsk, const struct stacktrace_ops *ops, void *data);
  41
  42#endif /* _ASM_UML_STACKTRACE_H */
  43