summaryrefslogtreecommitdiff
path: root/src/core/arm/arm_interface.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2018-12-29 22:58:13 -0500
committerGravatar GitHub2018-12-29 22:58:13 -0500
commit331c252509aa6c7712d983b388ba3533d3047df1 (patch)
treebdffbe558bab81adac706ed7ead2e6b91ed5a394 /src/core/arm/arm_interface.cpp
parentMerge pull request #1964 from lioncash/time (diff)
parentMoved log backtrace to arm_interface.cpp. Added printing of error code to fatal (diff)
downloadyuzu-331c252509aa6c7712d983b388ba3533d3047df1.tar.gz
yuzu-331c252509aa6c7712d983b388ba3533d3047df1.tar.xz
yuzu-331c252509aa6c7712d983b388ba3533d3047df1.zip
Merge pull request #1847 from ogniK5377/backtrace-break
Print backtrace on svcBreak
Diffstat (limited to 'src/core/arm/arm_interface.cpp')
-rw-r--r--src/core/arm/arm_interface.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp
new file mode 100644
index 000000000..bcc812da4
--- /dev/null
+++ b/src/core/arm/arm_interface.cpp
@@ -0,0 +1,26 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "arm_interface.h"
6#include "common/common_types.h"
7#include "common/logging/log.h"
8#include "core/memory.h"
9
10namespace Core {
11void ARM_Interface::LogBacktrace() {
12 VAddr fp = GetReg(29);
13 VAddr lr = GetReg(30);
14 VAddr sp = GetReg(13);
15 VAddr pc = GetPC();
16 LOG_ERROR(Core_ARM, "Backtrace, sp={:016X}, pc={:016X}", sp, pc);
17 for (;;) {
18 LOG_ERROR(Core_ARM, "{:016X}", lr);
19 if (!fp) {
20 break;
21 }
22 lr = Memory::Read64(fp + 8) - 4;
23 fp = Memory::Read64(fp);
24 }
25}
26}; // namespace Core