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