| 709 | } |
| 710 | |
| 711 | std::vector<MipsStackWalk::StackFrame> R5900DebugInterface::StackTrace(const BiosThread& thread) |
| 712 | { |
| 713 | if (thread.Status() == ThreadStatus::THS_RUN) |
| 714 | { |
| 715 | return MipsStackWalk::Walk(this, getPC(), getRegister(0, 31), getRegister(0, 29), |
| 716 | thread.EntryPoint()); |
| 717 | } |
| 718 | |
| 719 | EEInternalCtx* ctx = static_cast<EEInternalCtx*>(PSM(thread.RegCtx())); |
| 720 | u32 pc = thread.PC(); |
| 721 | // $zero is not in the array so subtract 1 |
| 722 | u32 ra = ctx->gpr[31 - 1]._u32[0]; |
| 723 | u32 sp = ctx->gpr[29 - 1]._u32[0]; |
| 724 | |
| 725 | return MipsStackWalk::Walk(this, pc, ra, sp, thread.EntryPoint()); |
| 726 | } |
| 727 | |
| 728 | std::vector<IopMod> R5900DebugInterface::GetModuleList() const |
| 729 | { |
no test coverage detected