openrisc: support framepointers and STACKTRACE_SUPPORT
authorStafford Horne <shorne@gmail.com>
Mon, 24 Jul 2017 12:44:35 +0000 (21:44 +0900)
committerStafford Horne <shorne@gmail.com>
Fri, 3 Nov 2017 05:01:15 +0000 (14:01 +0900)
commiteecac38b0423a69715073ecbde581dafd1abb28b
tree6c675e769ef8a5f0fb81b4ea2dd7596be9c5aebd
parent306e5e50a32140452849fff42fca104511fd6668
openrisc: support framepointers and STACKTRACE_SUPPORT

For lockdep support a reliable stack trace mechanism is needed.  This
patch adds support in OpenRISC for the stacktrace framework, implemented
by a simple unwinder api.  The unwinder api supports both framepointer
and basic stack tracing.

The unwinder is now used to replace the stack_dump() implementation as
well. The new traces are inline with other architectures trace format:

 Call trace:
 [<c0004448>] show_stack+0x3c/0x58
 [<c031c940>] dump_stack+0xa8/0xe4
 [<c0008104>] __cpu_up+0x64/0x130
 [<c000d268>] bringup_cpu+0x3c/0x178
 [<c000d038>] cpuhp_invoke_callback+0xa8/0x1fc
 [<c000d680>] cpuhp_up_callbacks+0x44/0x14c
 [<c000e400>] cpu_up+0x14c/0x1bc
 [<c041da60>] smp_init+0x104/0x15c
 [<c033843c>] ? kernel_init+0x0/0x140
 [<c0415e04>] kernel_init_freeable+0xbc/0x25c
 [<c033843c>] ? kernel_init+0x0/0x140
 [<c0338458>] kernel_init+0x1c/0x140
 [<c003a174>] ? schedule_tail+0x18/0xa0
 [<c0006b80>] ret_from_fork+0x1c/0x9c

Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/Kconfig
arch/openrisc/include/asm/unwinder.h [new file with mode: 0644]
arch/openrisc/kernel/Makefile
arch/openrisc/kernel/stacktrace.c [new file with mode: 0644]
arch/openrisc/kernel/traps.c
arch/openrisc/kernel/unwinder.c [new file with mode: 0644]