From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759330AbZKKVg7 (ORCPT ); Wed, 11 Nov 2009 16:36:59 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759246AbZKKVg4 (ORCPT ); Wed, 11 Nov 2009 16:36:56 -0500 Received: from mx1.redhat.com ([209.132.183.28]:12474 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759240AbZKKVgz (ORCPT ); Wed, 11 Nov 2009 16:36:55 -0500 Date: Wed, 11 Nov 2009 22:31:58 +0100 From: Oleg Nesterov To: Andrew Morton Cc: Benjamin Herrenschmidt , Roland McGrath , linux-kernel@vger.kernel.org Subject: [PATCH 2/5] ptrace: powerpc: implement user_single_step_siginfo() Message-ID: <20091111213158.GA10650@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Suggested by Roland. Implement user_single_step_siginfo() for powerpc. Signed-off-by: Oleg Nesterov Acked-by: Roland McGrath --- arch/powerpc/include/asm/ptrace.h | 2 ++ arch/powerpc/kernel/traps.c | 9 +++++++++ 2 files changed, 11 insertions(+) --- TH/arch/powerpc/include/asm/ptrace.h~2_PPC_HELPER 2009-11-10 01:03:23.000000000 +0100 +++ TH/arch/powerpc/include/asm/ptrace.h 2009-11-10 21:48:53.000000000 +0100 @@ -140,6 +140,8 @@ extern void user_enable_single_step(stru extern void user_enable_block_step(struct task_struct *); extern void user_disable_single_step(struct task_struct *); +#define ARCH_HAS_USER_SINGLE_STEP_INFO + #endif /* __ASSEMBLY__ */ #endif /* __KERNEL__ */ --- TH/arch/powerpc/kernel/traps.c~2_PPC_HELPER 2009-11-10 01:06:41.000000000 +0100 +++ TH/arch/powerpc/kernel/traps.c 2009-11-10 21:52:45.000000000 +0100 @@ -174,6 +174,15 @@ int die(const char *str, struct pt_regs return 0; } +void user_single_step_siginfo(struct task_struct *tsk, + struct pt_regs *regs, siginfo_t *info) +{ + memset(info, 0, sizeof(*info)); + info->si_signo = SIGTRAP; + info->si_code = TRAP_TRACE; + info->si_addr = (void __user *)regs->nip; +} + void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr) { siginfo_t info;