Lines Matching full:pc

71  *                       initial PC is in).
72 * @pc : Program counter at which to begin the search
74 * Return - PC at which stack frame creation occurs
77 static unsigned long *find_frame_creation(unsigned long *pc) in find_frame_creation() argument
86 for (i = 0; i < 1000; i++, pc--) { in find_frame_creation()
90 if (!kernel_text_address((unsigned long) pc)) in find_frame_creation()
93 instr = *pc; in find_frame_creation()
102 frame_size, pc); in find_frame_creation()
106 pr_debug(" Found frame creation at 0x%p, size %d\n", pc, in find_frame_creation()
108 return pc; in find_frame_creation()
117 * @pc : Program counter within current function
125 static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc, in lookup_prev_stack_frame() argument
133 if (pc != (unsigned long) &_switch_to) in lookup_prev_stack_frame()
134 prologue = find_frame_creation((unsigned long *)pc); in lookup_prev_stack_frame()
155 unsigned long pc, unsigned long fp,
165 static inline void unwind_trap(struct task_struct *task, unsigned long pc, in unwind_trap() argument
172 static inline void unwind_trap(struct task_struct *task, unsigned long pc, in unwind_trap() argument
177 microblaze_unwind_inner(task, regs->pc, regs->r1, regs->r15, trace, loglvl); in unwind_trap()
184 * @pc : Program counter from which we start unwinding
186 * @leaf_return : Value of r15 at pc. If the function is a leaf, this is
188 * @trace : Where to store stack backtrace (PC values).
193 unsigned long pc, unsigned long fp, in microblaze_unwind_inner() argument
200 pr_debug(" Unwinding with PC=%p, FP=%p\n", (void *)pc, (void *)fp); in microblaze_unwind_inner()
201 if (!pc || !fp || (pc & 3) || (fp & 3)) { in microblaze_unwind_inner()
205 for (; pc != 0;) { in microblaze_unwind_inner()
207 unsigned long return_to = pc + 2 * sizeof(unsigned long); in microblaze_unwind_inner()
237 unwind_trap(task, pc, fp, trace, loglvl); in microblaze_unwind_inner()
241 pc -= ofs; in microblaze_unwind_inner()
248 trace->entries[trace->nr_entries++] = pc; in microblaze_unwind_inner()
255 if (unlikely(pc == task_pt_regs(task)->pc)) { in microblaze_unwind_inner()
257 loglvl, (void *) pc, in microblaze_unwind_inner()
262 print_ip_sym(loglvl, pc); in microblaze_unwind_inner()
266 if (!kernel_text_address(pc)) in microblaze_unwind_inner()
269 if (lookup_prev_stack_frame(fp, pc, leaf_return, &next_fp, in microblaze_unwind_inner()
272 pc = next_pc & ~3; in microblaze_unwind_inner()
280 pr_debug(" Next PC=%p, next FP=%p\n", in microblaze_unwind_inner()
288 * @trace : Where to store stack backtrace (PC values).
298 microblaze_unwind_inner(task, regs->pc, regs->r1, in microblaze_unwind()
313 unsigned long pc, fp; in microblaze_unwind() local
321 : "=r" (pc) in microblaze_unwind()
325 microblaze_unwind_inner(current, pc, fp, 0, trace, loglvl); in microblaze_unwind()