On Sun, Mar 18, 2018 at 8:51 PM, Guo Ren <ren_guo@xxxxxxxxx> wrote: > Signed-off-by: Guo Ren <ren_guo@xxxxxxxxx> > + */ > +long arch_ptrace(struct task_struct *child, long request, unsigned long addr, > + unsigned long data) > +{ > + unsigned long tmp = 0, ret = 0; > + int i; > + > + switch (request) { > + /* read the word at location addr in the USER area. */ > + case PTRACE_PEEKUSR: > + > + case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ > + case PTRACE_GETREGS: /* Get all gp regs from the child. */ > + case PTRACE_SETREGS: /* Set all gp regs in the child. */ > + for (i = 0; i <= CSKY_GREG_NUM; i++) { > + ret = get_user(tmp, (unsigned long *)data); I think all of these should use the regset code like arch/riscv/kernel/ptrace.c does. Arnd