static inline void do_kernel_backtrace(unsigned long low_addr, struct stackframe *frame, unsigned int depth) { while (depth-- && frame->pc) { frame->pc = unwind_stack_by_address(low_addr, &(frame->sp), frame->pc, &(frame->ra)); oprofile_add_trace(frame->ra); } }
/* used by show_backtrace() */ unsigned long unwind_stack(struct task_struct *task, unsigned long *sp, unsigned long pc, unsigned long *ra) { unsigned long stack_page = (unsigned long)task_stack_page(task); return unwind_stack_by_address(stack_page, sp, pc, ra); }