Lines Matching full:frame

22  * AArch64 PCS assigns the frame pointer to x29.
36 * Unwind from one frame record (A) to the next frame record (B).
38 * We terminate early if the location of B indicates a malformed chain of frame
42 int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) in unwind_frame() argument
44 unsigned long fp = frame->fp; in unwind_frame()
56 if (test_bit(info.type, frame->stacks_done)) in unwind_frame()
72 if (info.type == frame->prev_type) { in unwind_frame()
73 if (fp <= frame->prev_fp) in unwind_frame()
76 set_bit(frame->prev_type, frame->stacks_done); in unwind_frame()
80 * Record this frame record's values and location. The prev_fp and in unwind_frame()
83 frame->fp = READ_ONCE_NOCHECK(*(unsigned long *)(fp)); in unwind_frame()
84 frame->pc = READ_ONCE_NOCHECK(*(unsigned long *)(fp + 8)); in unwind_frame()
85 frame->prev_fp = fp; in unwind_frame()
86 frame->prev_type = info.type; in unwind_frame()
90 (ptrauth_strip_insn_pac(frame->pc) == (unsigned long)return_to_handler)) { in unwind_frame()
94 * modified a return address (LR) in a stack frame in unwind_frame()
98 ret_stack = ftrace_graph_get_ret_stack(tsk, frame->graph++); in unwind_frame()
101 frame->pc = ret_stack->ret; in unwind_frame()
105 frame->pc = ptrauth_strip_insn_pac(frame->pc); in unwind_frame()
113 if (!frame->fp && !frame->pc) in unwind_frame()
120 void notrace walk_stackframe(struct task_struct *tsk, struct stackframe *frame, in walk_stackframe() argument
126 if (!fn(data, frame->pc)) in walk_stackframe()
128 ret = unwind_frame(tsk, frame); in walk_stackframe()
143 struct stackframe frame; in dump_backtrace() local
161 start_backtrace(&frame, in dump_backtrace()
168 start_backtrace(&frame, in dump_backtrace()
175 /* skip until specified stack frame */ in dump_backtrace()
177 dump_backtrace_entry(frame.pc, loglvl); in dump_backtrace()
178 } else if (frame.fp == regs->regs[29]) { in dump_backtrace()
183 * stack frame does not contain the corresponding pc in dump_backtrace()
189 } while (!unwind_frame(tsk, &frame)); in dump_backtrace()
205 struct stackframe frame; in arch_stack_walk() local
208 start_backtrace(&frame, regs->regs[29], regs->pc); in arch_stack_walk()
210 start_backtrace(&frame, in arch_stack_walk()
214 start_backtrace(&frame, thread_saved_fp(task), in arch_stack_walk()
217 walk_stackframe(task, &frame, consume_entry, cookie); in arch_stack_walk()