diff --git a/libcpu/aarch64/common/backtrace.c b/libcpu/aarch64/common/backtrace.c index c3e3803f9306fab540893e8fddffe719e9ad32cc..d8985d0c09eac9c491dfe66bd5f771a69516b01a 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 b34601da58f1df866676646e769318943ae6ac1d..8c8006690c81dadedeeaf58dc4919c2bcd4a59fc 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__*/