patch-2.4.21 linux-2.4.21/arch/ppc64/kernel/ptrace.c
Next file: linux-2.4.21/arch/ppc64/kernel/ptrace32.c
Previous file: linux-2.4.21/arch/ppc64/kernel/prom.c
Back to the patch index
Back to the overall index
- Lines: 93
- Date:
2003-06-13 07:51:32.000000000 -0700
- Orig file:
linux-2.4.20/arch/ppc64/kernel/ptrace.c
- Orig date:
2002-11-28 15:53:11.000000000 -0800
diff -urN linux-2.4.20/arch/ppc64/kernel/ptrace.c linux-2.4.21/arch/ppc64/kernel/ptrace.c
@@ -252,50 +252,68 @@
break;
case PPC_PTRACE_GETREGS: { /* Get GPRs 0 - 31. */
- u64 tmp;
- u64 cntr;
-
- ret = 0;
- for (cntr=0; cntr<32 && ret==0; ++cntr) {
- tmp = ((u64*)child->thread.regs)[cntr];
- ret = put_user(tmp, (u64*)(data+cntr));
+ int i;
+ unsigned long *reg = &((unsigned long *)child->thread.regs)[0];
+ unsigned long *tmp = (unsigned long *)addr;
+
+ for (i = 0; i < 32; i++) {
+ ret = put_user(*reg, tmp);
+ if (ret)
+ break;
+ reg++;
+ tmp++;
}
break;
}
case PPC_PTRACE_SETREGS: { /* Set GPRs 0 - 31. */
- u64 cntr;
-
- ret = 0;
- for (cntr=0; cntr<32 && ret==0; ++cntr)
- ret = put_reg(child, cntr, *(u64*)(data+cntr));
+ int i;
+ unsigned long *reg = &((unsigned long *)child->thread.regs)[0];
+ unsigned long *tmp = (unsigned long *)addr;
+
+ for (i = 0; i < 32; i++) {
+ ret = get_user(*reg, tmp);
+ if (ret)
+ break;
+ reg++;
+ tmp++;
+ }
break;
}
case PPC_PTRACE_GETFPREGS: { /* Get FPRs 0 - 31. */
- u64 tmp;
- u64 cntr;
+ int i;
+ unsigned long *reg = &((unsigned long *)child->thread.fpr)[0];
+ unsigned long *tmp = (unsigned long *)addr;
- ret = -EIO;
if (child->thread.regs->msr & MSR_FP)
giveup_fpu(child);
- ret = 0;
- for (cntr=0; cntr<32 && ret==0; ++cntr) {
- tmp = ((u64*)child->thread.fpr)[cntr];
- ret = put_user(tmp, (u64*)(data+cntr));
+
+ for (i = 0; i < 32; i++) {
+ ret = put_user(*reg, tmp);
+ if (ret)
+ break;
+ reg++;
+ tmp++;
}
break;
}
case PPC_PTRACE_SETFPREGS: { /* Get FPRs 0 - 31. */
- u64 cntr;
+ int i;
+ unsigned long *reg = &((unsigned long *)child->thread.fpr)[0];
+ unsigned long *tmp = (unsigned long *)addr;
- ret = -EIO;
if (child->thread.regs->msr & MSR_FP)
giveup_fpu(child);
- for (cntr=0; cntr<32; ++cntr)
- ((u64*)child->thread.fpr)[cntr] = *(u64*)(data+cntr);
- ret = 0;
+
+ for (i = 0; i < 32; i++) {
+ ret = get_user(*reg, tmp);
+ if (ret)
+ break;
+ reg++;
+ tmp++;
+ }
break;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)