Lines Matching refs:frame

41 int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame)  in unwind_frame()  argument
43 unsigned long fp = frame->fp; in unwind_frame()
55 if (test_bit(info.type, frame->stacks_done)) in unwind_frame()
71 if (info.type == frame->prev_type) { in unwind_frame()
72 if (fp <= frame->prev_fp) in unwind_frame()
75 set_bit(frame->prev_type, frame->stacks_done); in unwind_frame()
82 frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp)); in unwind_frame()
83 frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 8)); in unwind_frame()
84 frame->prev_fp = fp; in unwind_frame()
85 frame->prev_type = info.type; in unwind_frame()
89 (frame->pc == (unsigned long)return_to_handler)) { in unwind_frame()
97 ret_stack = ftrace_graph_get_ret_stack(tsk, frame->graph++); in unwind_frame()
100 frame->pc = ret_stack->ret; in unwind_frame()
110 if (!frame->fp && !frame->pc) in unwind_frame()
117 void notrace walk_stackframe(struct task_struct *tsk, struct stackframe *frame, in walk_stackframe() argument
123 if (fn(frame, data)) in walk_stackframe()
125 ret = unwind_frame(tsk, frame); in walk_stackframe()
139 static int save_trace(struct stackframe *frame, void *d) in save_trace() argument
143 unsigned long addr = frame->pc; in save_trace()
160 struct stackframe frame; in save_stack_trace_regs() local
166 start_backtrace(&frame, regs->regs[29], regs->pc); in save_stack_trace_regs()
167 walk_stackframe(current, &frame, save_trace, &data); in save_stack_trace_regs()
175 struct stackframe frame; in __save_stack_trace() local
185 start_backtrace(&frame, thread_saved_fp(tsk), in __save_stack_trace()
190 start_backtrace(&frame, in __save_stack_trace()
195 walk_stackframe(tsk, &frame, save_trace, &data); in __save_stack_trace()