Lines Matching refs:pc
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()
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,
164 static inline void unwind_trap(struct task_struct *task, unsigned long pc, in unwind_trap() argument
170 static inline void unwind_trap(struct task_struct *task, unsigned long pc, in unwind_trap() argument
174 microblaze_unwind_inner(task, regs->pc, regs->r1, regs->r15, trace); in unwind_trap()
189 unsigned long pc, unsigned long fp, in microblaze_unwind_inner() argument
195 pr_debug(" Unwinding with PC=%p, FP=%p\n", (void *)pc, (void *)fp); in microblaze_unwind_inner()
196 if (!pc || !fp || (pc & 3) || (fp & 3)) { in microblaze_unwind_inner()
200 for (; pc != 0;) { in microblaze_unwind_inner()
202 unsigned long return_to = pc + 2 * sizeof(unsigned long); in microblaze_unwind_inner()
232 unwind_trap(task, pc, fp, trace); in microblaze_unwind_inner()
236 pc -= ofs; in microblaze_unwind_inner()
243 trace->entries[trace->nr_entries++] = pc; in microblaze_unwind_inner()
250 if (unlikely(pc == task_pt_regs(task)->pc)) { in microblaze_unwind_inner()
252 (void *) pc, in microblaze_unwind_inner()
257 print_ip_sym(pc); in microblaze_unwind_inner()
261 if (!kernel_text_address(pc)) in microblaze_unwind_inner()
264 if (lookup_prev_stack_frame(fp, pc, leaf_return, &next_fp, in microblaze_unwind_inner()
267 pc = next_pc & ~3; in microblaze_unwind_inner()
291 microblaze_unwind_inner(task, regs->pc, regs->r1, in microblaze_unwind()
305 unsigned long pc, fp; in microblaze_unwind() local
313 : "=r" (pc) in microblaze_unwind()
317 microblaze_unwind_inner(current, pc, fp, 0, trace); in microblaze_unwind()