diff --git a/libcpu/aarch64/common/backtrace.c b/libcpu/aarch64/common/backtrace.c index c3e3803f93..d8985d0c09 100644 --- a/libcpu/aarch64/common/backtrace.c +++ b/libcpu/aarch64/common/backtrace.c @@ -55,3 +55,14 @@ void backtrace(unsigned long pc, unsigned long lr, unsigned long fp) walk_unwind(lr, fp); rt_kprintf("\n"); } + +int rt_backtrace(void) +{ + unsigned long pc = (unsigned long)backtrace; + unsigned long ra = (unsigned long)__builtin_return_address(0U); + unsigned long fr = (unsigned long)__builtin_frame_address(0U); + + backtrace(pc, ra, fr); + return 0; +} +MSH_CMD_EXPORT_ALIAS(rt_backtrace, bt_test, backtrace test); diff --git a/libcpu/aarch64/common/backtrace.h b/libcpu/aarch64/common/backtrace.h index b34601da58..8c8006690c 100644 --- a/libcpu/aarch64/common/backtrace.h +++ b/libcpu/aarch64/common/backtrace.h @@ -18,5 +18,6 @@ struct bt_frame }; void backtrace(unsigned long pc, unsigned long lr, unsigned long fp); +int rt_backtrace(void); #endif /*__BACKTRACE_H__*/