diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c index d91ed8e4310c..4daffd38b0ee 100644 --- a/arch/arm/kernel/unwind.c +++ b/arch/arm/kernel/unwind.c @@ -413,10 +413,20 @@ int unwind_frame(struct stackframe *frame) return -URC_FAILURE; idx = unwind_find_idx(frame->pc); +#if IS_ENABLED(CONFIG_AMLOGIC_ARM_UNWIND) + if (!idx) + idx = unwind_find_idx(frame->lr); + if (!idx) { + pr_warn("unwind: Index not found, pc=%pS, lr=%pS\n", + (void *)frame->pc, (void *)frame->lr); + return -URC_FAILURE; + } +#else if (!idx) { pr_warn("unwind: Index not found %08lx\n", frame->pc); return -URC_FAILURE; } +#endif ctrl.vrs[FP] = frame->fp; ctrl.vrs[SP] = frame->sp;