arch/tile: implement arch_ptrace using user_regset on tile
Simon Marchi [Tue, 18 Dec 2012 01:08:10 +0000 (20:08 -0500)]
This patch changes arch_ptrace on tile so that it uses user_regset
to implement the PTRACE_GETREGS and PTRACE_SETREGS operations.

Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>

arch/tile/kernel/ptrace.c

index 882e381..9835312 100644 (file)
@@ -193,18 +193,15 @@ long arch_ptrace(struct task_struct *child, long request,
                break;
 
        case PTRACE_GETREGS:  /* Get all registers from the child. */
-               if (copy_to_user(datap, getregs(child, &copyregs),
-                                sizeof(struct pt_regs)) == 0) {
-                       ret = 0;
-               }
+               ret = copy_regset_to_user(child, &tile_user_regset_view,
+                                         REGSET_GPR, 0,
+                                         sizeof(struct pt_regs), datap);
                break;
 
        case PTRACE_SETREGS:  /* Set all registers in the child. */
-               if (copy_from_user(&copyregs, datap,
-                                  sizeof(struct pt_regs)) == 0) {
-                       putregs(child, &copyregs);
-                       ret = 0;
-               }
+               ret = copy_regset_from_user(child, &tile_user_regset_view,
+                                           REGSET_GPR, 0,
+                                           sizeof(struct pt_regs), datap);
                break;
 
        case PTRACE_GETFPREGS:  /* Get the child FPU state. */