Lines Matching +full:non +full:- +full:pc
1 // SPDX-License-Identifier: GPL-2.0-only
24 * The unwind will begin at the PC within the regs.
34 state->fp = regs->regs[29]; in unwind_init_from_regs()
35 state->pc = regs->pc; in unwind_init_from_regs()
51 state->fp = (unsigned long)__builtin_frame_address(1); in unwind_init_from_caller()
52 state->pc = (unsigned long)__builtin_return_address(0); in unwind_init_from_caller()
58 * The unwind will begin at the blocked tasks saved PC (i.e. the caller of
71 state->fp = thread_saved_fp(task); in unwind_init_from_task()
72 state->pc = thread_saved_pc(task); in unwind_init_from_task()
79 if (state->task->ret_stack && in unwind_recover_return_address()
80 (state->pc == (unsigned long)return_to_handler)) { in unwind_recover_return_address()
82 orig_pc = ftrace_graph_ret_addr(state->task, NULL, state->pc, in unwind_recover_return_address()
83 (void *)state->fp); in unwind_recover_return_address()
84 if (WARN_ON_ONCE(state->pc == orig_pc)) in unwind_recover_return_address()
85 return -EINVAL; in unwind_recover_return_address()
86 state->pc = orig_pc; in unwind_recover_return_address()
91 if (is_kretprobe_trampoline(state->pc)) { in unwind_recover_return_address()
92 state->pc = kretprobe_find_ret_addr(state->task, in unwind_recover_return_address()
93 (void *)state->fp, in unwind_recover_return_address()
94 &state->kr_cur); in unwind_recover_return_address()
111 struct task_struct *tsk = state->task; in unwind_next()
112 unsigned long fp = state->fp; in unwind_next()
116 if (fp == (unsigned long)task_pt_regs(tsk)->stackframe) in unwind_next()
117 return -ENOENT; in unwind_next()
123 state->pc = ptrauth_strip_kernel_insn_pac(state->pc); in unwind_next()
138 if (!consume_entry(cookie, state->pc)) in unwind()
147 * Per-cpu stacks are only accessible when unwinding the current task in a
148 * non-preemptible context.