Lines Matching refs:sp

22 static bool outside_of_stack(struct unwind_state *state, unsigned long sp)  in outside_of_stack()  argument
24 return (sp <= state->sp) || in outside_of_stack()
25 (sp > state->stack_info.end - sizeof(struct stack_frame)); in outside_of_stack()
28 static bool update_stack_info(struct unwind_state *state, unsigned long sp) in update_stack_info() argument
34 if (get_stack_info(sp, state->task, info, mask) != 0 || in update_stack_info()
35 !on_stack(info, sp, sizeof(struct stack_frame))) in update_stack_info()
61 unsigned long sp, ip; in unwind_next_frame() local
66 sp = state->sp; in unwind_next_frame()
67 sf = (struct stack_frame *) sp; in unwind_next_frame()
77 sf = (struct stack_frame *) state->sp; in unwind_next_frame()
78 sp = READ_ONCE_NOCHECK(sf->back_chain); in unwind_next_frame()
79 if (likely(sp)) { in unwind_next_frame()
81 if (unlikely(outside_of_stack(state, sp))) { in unwind_next_frame()
82 if (!update_stack_info(state, sp)) in unwind_next_frame()
85 sf = (struct stack_frame *) sp; in unwind_next_frame()
90 sp = state->sp + STACK_FRAME_OVERHEAD; in unwind_next_frame()
91 if (!on_stack(info, sp, sizeof(struct pt_regs))) in unwind_next_frame()
93 regs = (struct pt_regs *) sp; in unwind_next_frame()
97 sp = READ_ONCE_NOCHECK(regs->gprs[15]); in unwind_next_frame()
98 if (unlikely(outside_of_stack(state, sp))) { in unwind_next_frame()
99 if (!update_stack_info(state, sp)) in unwind_next_frame()
107 if (sp & 0x7) in unwind_next_frame()
111 state->sp = sp; in unwind_next_frame()
132 unsigned long ip, sp; in __unwind_start() local
147 sp = regs->gprs[15]; in __unwind_start()
149 sp = current_frame_address(); in __unwind_start()
151 sp = task->thread.ksp; in __unwind_start()
155 if (!update_stack_info(state, sp)) { in __unwind_start()
164 sf = (struct stack_frame *)sp; in __unwind_start()
169 state->sp = sp; in __unwind_start()
178 if (state->sp >= first_frame) in __unwind_start()