Lines Matching full:frame
18 * Unwind the current stack frame and store the new register values in the
33 int notrace unwind_frame(struct stackframe *frame) in unwind_frame() argument
36 unsigned long fp = frame->fp; in unwind_frame()
39 low = frame->sp; in unwind_frame()
42 /* check current frame pointer is within bounds */ in unwind_frame()
46 /* restore the registers from the stack frame */ in unwind_frame()
47 frame->fp = *(unsigned long *)(fp - 12); in unwind_frame()
48 frame->sp = *(unsigned long *)(fp - 8); in unwind_frame()
49 frame->pc = *(unsigned long *)(fp - 4); in unwind_frame()
55 void notrace walk_stackframe(struct stackframe *frame, in walk_stackframe() argument
61 if (fn(frame, data)) in walk_stackframe()
63 ret = unwind_frame(frame); in walk_stackframe()
77 static int save_trace(struct stackframe *frame, void *d) in save_trace() argument
81 unsigned long addr = frame->pc; in save_trace()
98 struct stackframe frame; in save_stack_trace_tsk() local
105 frame.fp = thread_saved_fp(tsk); in save_stack_trace_tsk()
106 frame.sp = thread_saved_sp(tsk); in save_stack_trace_tsk()
107 frame.lr = 0; /* recovered from the stack */ in save_stack_trace_tsk()
108 frame.pc = thread_saved_pc(tsk); in save_stack_trace_tsk()
113 frame.fp = (unsigned long)__builtin_frame_address(0); in save_stack_trace_tsk()
114 frame.sp = current_sp; in save_stack_trace_tsk()
115 frame.lr = (unsigned long)__builtin_return_address(0); in save_stack_trace_tsk()
116 frame.pc = (unsigned long)save_stack_trace_tsk; in save_stack_trace_tsk()
119 walk_stackframe(&frame, save_trace, &data); in save_stack_trace_tsk()