Lines Matching refs:frame
382 int unwind_frame(struct stackframe *frame) in unwind_frame() argument
389 sp_low = frame->sp; in unwind_frame()
394 frame->pc, frame->lr, frame->sp); in unwind_frame()
396 idx = unwind_find_idx(frame->pc); in unwind_frame()
398 if (frame->pc && kernel_text_address(frame->pc)) in unwind_frame()
399 pr_warn("unwind: Index not found %08lx\n", frame->pc); in unwind_frame()
403 ctrl.vrs[FP] = frame->fp; in unwind_frame()
404 ctrl.vrs[SP] = frame->sp; in unwind_frame()
405 ctrl.vrs[LR] = frame->lr; in unwind_frame()
411 else if (frame->pc == prel31_to_addr(&idx->addr_offset)) { in unwind_frame()
420 if (frame->pc == frame->lr) in unwind_frame()
422 frame->pc = frame->lr; in unwind_frame()
457 sp_low = frame->fp; in unwind_frame()
458 ctrl.sp_high = ALIGN(frame->fp, THREAD_SIZE); in unwind_frame()
476 if (frame->pc == ctrl.vrs[PC] && frame->sp == ctrl.vrs[SP]) in unwind_frame()
479 frame->fp = ctrl.vrs[FP]; in unwind_frame()
480 frame->sp = ctrl.vrs[SP]; in unwind_frame()
481 frame->lr = ctrl.vrs[LR]; in unwind_frame()
482 frame->pc = ctrl.vrs[PC]; in unwind_frame()
483 frame->lr_addr = ctrl.lr_addr; in unwind_frame()
491 struct stackframe frame; in unwind_backtrace() local
499 arm_get_current_stackframe(regs, &frame); in unwind_backtrace()
502 frame.pc = regs->ARM_lr; in unwind_backtrace()
504 frame.fp = (unsigned long)__builtin_frame_address(0); in unwind_backtrace()
505 frame.sp = current_stack_pointer; in unwind_backtrace()
506 frame.lr = (unsigned long)__builtin_return_address(0); in unwind_backtrace()
512 frame.pc = (unsigned long)&&here; in unwind_backtrace()
515 frame.fp = thread_saved_fp(tsk); in unwind_backtrace()
516 frame.sp = thread_saved_sp(tsk); in unwind_backtrace()
521 frame.lr = 0; in unwind_backtrace()
522 frame.pc = thread_saved_pc(tsk); in unwind_backtrace()
527 unsigned long where = frame.pc; in unwind_backtrace()
529 urc = unwind_frame(&frame); in unwind_backtrace()
532 dump_backtrace_entry(where, frame.pc, frame.sp - 4, loglvl); in unwind_backtrace()