unwind: fix too mush unwind warning on arm32 [1/1]

PD#SWPL-114632

Problem:
too much unwind warning when pt_regs pc register is invalid

Solution:
use pt_regs lr register to unwind, replace pc register

Verify:
C3

Change-Id: I53bc7739e2909818c04d6e50b2172a06984bd883
Signed-off-by: qiankun.wang <qiankun.wang@amlogic.com>
This commit is contained in:
qiankun.wang
2023-05-12 14:33:37 +08:00
committed by Dongjin Kim
parent 76880201e8
commit 8b88bf9a31

View File

@@ -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;