diff options
Diffstat (limited to 'arch/openrisc/kernel/ptrace.c')
| -rw-r--r-- | arch/openrisc/kernel/ptrace.c | 26 | 
1 files changed, 6 insertions, 20 deletions
diff --git a/arch/openrisc/kernel/ptrace.c b/arch/openrisc/kernel/ptrace.c index c8f47a623754..4d60ae2a12fa 100644 --- a/arch/openrisc/kernel/ptrace.c +++ b/arch/openrisc/kernel/ptrace.c @@ -44,29 +44,15 @@   */  static int genregs_get(struct task_struct *target,  		       const struct user_regset *regset, -		       unsigned int pos, unsigned int count, -		       void *kbuf, void __user * ubuf) +		       struct membuf to)  {  	const struct pt_regs *regs = task_pt_regs(target); -	int ret;  	/* r0 */ -	ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, 0, 4); - -	if (!ret) -		ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, -					  regs->gpr+1, 4, 4*32); -	if (!ret) -		ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, -				  ®s->pc, 4*32, 4*33); -	if (!ret) -		ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, -					  ®s->sr, 4*33, 4*34); -	if (!ret) -		ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, -					       4*34, -1); - -	return ret; +	membuf_zero(&to, 4); +	membuf_write(&to, regs->gpr + 1, 31 * 4); +	membuf_store(&to, regs->pc); +	return membuf_store(&to, regs->sr);  }  /* @@ -114,7 +100,7 @@ static const struct user_regset or1k_regsets[] = {  			    .n = ELF_NGREG,  			    .size = sizeof(long),  			    .align = sizeof(long), -			    .get = genregs_get, +			    .regset_get = genregs_get,  			    .set = genregs_set,  			    },  };  |