blob: 22167cb2607893cd784fa1973e4b1837d4a0d3af [file] [log] [blame]
Dmitry V. Levind70d1c42015-03-22 22:13:55 +00001/*
2 * PTRACE_GETREGS was added to the PowerPC kernel in v2.6.23,
3 * we provide a slow fallback for old kernels.
4 */
5static int
6getregs_old(pid_t pid)
7{
8 int i;
9 long r;
10
11 if (iflag) {
12 r = upeek(pid, sizeof(long) * PT_NIP, (long *)&ppc_regs.nip);
13 if (r)
14 goto out;
15 }
16#ifdef POWERPC64 /* else we never use it */
17 r = upeek(pid, sizeof(long) * PT_MSR, (long *)&ppc_regs.msr);
18 if (r)
19 goto out;
20#endif
21 r = upeek(pid, sizeof(long) * PT_CCR, (long *)&ppc_regs.ccr);
22 if (r)
23 goto out;
24 r = upeek(pid, sizeof(long) * PT_ORIG_R3, (long *)&ppc_regs.orig_gpr3);
25 if (r)
26 goto out;
27 for (i = 0; i <= 8; i++) {
28 r = upeek(pid, sizeof(long) * (PT_R0 + i),
29 (long *)&ppc_regs.gpr[i]);
30 if (r)
31 goto out;
32 }
33 out:
34 return r;
35}