diff options
| author | Mai M <mathew1800@gmail.com> | 2022-04-21 02:51:03 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-21 02:51:03 -0400 |
| commit | fd409a92473726600a6605d5cfb782c38c3de72d (patch) | |
| tree | 7f1e82d05b97420ee8f652439362774b0f15bc3d /src/core/arm/dynarmic/arm_dynarmic_32.cpp | |
| parent | ea07e61d3d6ff553d4a728648a140fe7ca354573 (diff) | |
| parent | 0ca4dff62c61570828ec563d6200ca47b3d02569 (diff) | |
Merge pull request #8232 from liamwhite/backtrace
core/arm: separate backtrace collection
Diffstat (limited to 'src/core/arm/dynarmic/arm_dynarmic_32.cpp')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_32.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index 5de4384db..da5659046 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -268,6 +268,10 @@ u64 ARM_Dynarmic_32::GetPC() const { return jit.load()->Regs()[15]; } +u64 ARM_Dynarmic_32::GetSP() const { + return jit.load()->Regs()[13]; +} + u64 ARM_Dynarmic_32::GetReg(int index) const { return jit.load()->Regs()[index]; } @@ -362,4 +366,19 @@ void ARM_Dynarmic_32::PageTableChanged(Common::PageTable& page_table, jit_cache.emplace(key, std::move(new_jit)); } +std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_32::GetBacktrace(Core::System& system, + u64 sp, u64 lr) { + // No way to get accurate stack traces in A32 yet + return {}; +} + +std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_32::GetBacktraceFromContext( + System& system, const ThreadContext32& ctx) { + return GetBacktrace(system, ctx.cpu_registers[13], ctx.cpu_registers[14]); +} + +std::vector<ARM_Interface::BacktraceEntry> ARM_Dynarmic_32::GetBacktrace() const { + return GetBacktrace(system, GetReg(13), GetReg(14)); +} + } // namespace Core |
