summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2023-02-27 10:04:10 +0800
committerGitHub <[email protected]>2023-02-27 10:04:10 +0800
commitf295d3df7880f37eb7a7cd0fc18c2827e40420e6 (patch)
tree2b4c0fe8d4935a6549b7c24eb8f866995378f9d1 /libcpu
parentab7ab19be52f2993b15fcbc9e0aa545c5ce333ec (diff)
[libcpu.aarch64] add rt_backtrace function. (#6982)
* [libcpu.aarch64] add rt_backtrace function.
Diffstat (limited to 'libcpu')
-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__*/