Lines Matching refs:frame
43 int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) in unwind_frame() argument
45 unsigned long fp = frame->fp; in unwind_frame()
56 frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp)); in unwind_frame()
57 frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 8)); in unwind_frame()
61 (frame->pc == (unsigned long)return_to_handler)) { in unwind_frame()
62 if (WARN_ON_ONCE(frame->graph == -1)) in unwind_frame()
64 if (frame->graph < -1) in unwind_frame()
65 frame->graph += FTRACE_NOTRACE_DEPTH; in unwind_frame()
73 frame->pc = tsk->ret_stack[frame->graph--].ret; in unwind_frame()
83 if (!frame->fp && !frame->pc) in unwind_frame()
89 void notrace walk_stackframe(struct task_struct *tsk, struct stackframe *frame, in walk_stackframe() argument
95 if (fn(frame, data)) in walk_stackframe()
97 ret = unwind_frame(tsk, frame); in walk_stackframe()
110 static int save_trace(struct stackframe *frame, void *d) in save_trace() argument
114 unsigned long addr = frame->pc; in save_trace()
131 struct stackframe frame; in save_stack_trace_regs() local
137 frame.fp = regs->regs[29]; in save_stack_trace_regs()
138 frame.pc = regs->pc; in save_stack_trace_regs()
140 frame.graph = current->curr_ret_stack; in save_stack_trace_regs()
143 walk_stackframe(current, &frame, save_trace, &data); in save_stack_trace_regs()
152 struct stackframe frame; in __save_stack_trace() local
162 frame.fp = thread_saved_fp(tsk); in __save_stack_trace()
163 frame.pc = thread_saved_pc(tsk); in __save_stack_trace()
167 frame.fp = (unsigned long)__builtin_frame_address(0); in __save_stack_trace()
168 frame.pc = (unsigned long)__save_stack_trace; in __save_stack_trace()
171 frame.graph = tsk->curr_ret_stack; in __save_stack_trace()
174 walk_stackframe(tsk, &frame, save_trace, &data); in __save_stack_trace()