Index: src/processor/stackwalk_common.cc |
=================================================================== |
--- src/processor/stackwalk_common.cc (revision 1435) |
+++ src/processor/stackwalk_common.cc (working copy) |
@@ -602,6 +602,48 @@ |
sequence = PrintRegister64("s7", |
frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S7], |
sequence); |
+ } else if (cpu == "sh4") { |
+ const StackFrameSH4* frame_sh4 = |
+ reinterpret_cast<const StackFrameSH4*>(frame); |
+ |
+ // Argument registers (caller-saves), which will likely only be valid |
+ // for the youngest frame. |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R0) |
+ sequence = PrintRegister("r0", frame_sh4->context.iregs[0], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R1) |
+ sequence = PrintRegister("r1", frame_sh4->context.iregs[1], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R2) |
+ sequence = PrintRegister("r2", frame_sh4->context.iregs[2], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R3) |
+ sequence = PrintRegister("r3", frame_sh4->context.iregs[3], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R4) |
+ sequence = PrintRegister("r4", frame_sh4->context.iregs[3], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R5) |
+ sequence = PrintRegister("r5", frame_sh4->context.iregs[5], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R6) |
+ sequence = PrintRegister("r6", frame_sh4->context.iregs[6], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R7) |
+ sequence = PrintRegister("r7", frame_sh4->context.iregs[7], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R8) |
+ sequence = PrintRegister("r8", frame_sh4->context.iregs[8], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R9) |
+ sequence = PrintRegister("r9", frame_sh4->context.iregs[9], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R10) |
+ sequence = PrintRegister("r10", frame_sh4->context.iregs[10], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R11) |
+ sequence = PrintRegister("r11", frame_sh4->context.iregs[11], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R12) |
+ sequence = PrintRegister("r12", frame_sh4->context.iregs[12], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R13) |
+ sequence = PrintRegister("r13", frame_sh4->context.iregs[13], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_R14) |
+ sequence = PrintRegister("r14", frame_sh4->context.iregs[14], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_SP) |
+ sequence = PrintRegister("r15", frame_sh4->context.iregs[15], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_PC) |
+ sequence = PrintRegister("pc", frame_sh4->context.iregs[16], sequence); |
+ if (frame_sh4->context_validity & StackFrameSH4::CONTEXT_VALID_PR) |
+ sequence = PrintRegister("pr", frame_sh4->context.iregs[17], sequence); |
} |
printf("\n Found by: %s\n", frame->trust_description().c_str()); |