LoongArch: Add guess unwinder support
authorQing Zhang <zhangqing@loongson.cn>
Sat, 6 Aug 2022 08:10:02 +0000 (16:10 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Fri, 12 Aug 2022 05:10:11 +0000 (13:10 +0800)
commit49232773d8233ed70c4998851bc84e465fc1c788
treeeb361dbb849c68b079022e025e755cdb17a1f10c
parentdce6098b22d58e5b646b1c67174c53f5a6a05605
LoongArch: Add guess unwinder support

Name "guess unwinder" comes from x86, it scans the stack and reports
every kernel text address it finds.

Unwinders can be used by dump_stack() and other stacktrace functions.

Three stages when we do unwind,
  1) unwind_start(), the prapare of unwinding, fill unwind_state.
  2) unwind_done(), judge whether the unwind process is finished or not.
  3) unwind_next_frame(), unwind the next frame.

Add get_stack_info() to get stack info. At present we have irq stack and
task stack. The next_sp is the key info between two types of stacks.

Dividing unwinder helps to add new unwinders in the future.

Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/Kconfig.debug
arch/loongarch/include/asm/stacktrace.h
arch/loongarch/include/asm/unwind.h [new file with mode: 0644]
arch/loongarch/kernel/Makefile
arch/loongarch/kernel/process.c
arch/loongarch/kernel/traps.c
arch/loongarch/kernel/unwind_guess.c [new file with mode: 0644]