in kernel/ptrace.c [22:42]
static int genregs_get(struct task_struct *target,
const struct user_regset *regset,
struct membuf to)
{
const struct pt_regs *regs = task_pt_regs(target);
const struct switch_stack *sw = (struct switch_stack *)regs - 1;
membuf_zero(&to, 4); // R0
membuf_write(&to, ®s->r1, 7 * 4); // R1..R7
membuf_write(&to, ®s->r8, 8 * 4); // R8..R15
membuf_write(&to, sw, 8 * 4); // R16..R23
membuf_zero(&to, 2 * 4); /* et and bt */
membuf_store(&to, regs->gp);
membuf_store(&to, regs->sp);
membuf_store(&to, regs->fp);
membuf_store(&to, regs->ea);
membuf_zero(&to, 4); // PTR_BA
membuf_store(&to, regs->ra);
membuf_store(&to, regs->ea); /* use ea for PC */
return membuf_zero(&to, (NUM_PTRACE_REG - PTR_PC) * 4);
}