summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcpu/aarch64/common/backtrace.c11
-rw-r--r--libcpu/aarch64/common/backtrace.h1
2 files changed, 12 insertions, 0 deletions
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__*/