diff options
| author | Bernard Xiong <[email protected]> | 2023-02-27 10:04:10 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-02-27 10:04:10 +0800 |
| commit | f295d3df7880f37eb7a7cd0fc18c2827e40420e6 (patch) | |
| tree | 2b4c0fe8d4935a6549b7c24eb8f866995378f9d1 | |
| parent | ab7ab19be52f2993b15fcbc9e0aa545c5ce333ec (diff) | |
[libcpu.aarch64] add rt_backtrace function. (#6982)
* [libcpu.aarch64] add rt_backtrace function.
| -rw-r--r-- | libcpu/aarch64/common/backtrace.c | 11 | ||||
| -rw-r--r-- | libcpu/aarch64/common/backtrace.h | 1 |
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__*/ |
