| /* |
| * PTRACE_GETREGS was added to the PowerPC kernel in v2.6.23, |
| * we provide a slow fallback for old kernels. |
| */ |
| static int |
| getregs_old(struct tcb *tcp) |
| { |
| int i; |
| long r; |
| |
| if (iflag) { |
| r = upeek(tcp, sizeof(long) * PT_NIP, &ppc_regs.nip); |
| if (r) |
| goto out; |
| } |
| #ifdef POWERPC64 /* else we never use it */ |
| r = upeek(tcp, sizeof(long) * PT_MSR, &ppc_regs.msr); |
| if (r) |
| goto out; |
| #endif |
| r = upeek(tcp, sizeof(long) * PT_CCR, &ppc_regs.ccr); |
| if (r) |
| goto out; |
| r = upeek(tcp, sizeof(long) * PT_ORIG_R3, &ppc_regs.orig_gpr3); |
| if (r) |
| goto out; |
| for (i = 0; i <= 8; i++) { |
| r = upeek(tcp, sizeof(long) * (PT_R0 + i), |
| &ppc_regs.gpr[i]); |
| if (r) |
| goto out; |
| } |
| out: |
| return r; |
| } |