diff options
author | Christoph Hellwig <hch@lst.de> | 2010-03-10 18:22:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-12 18:52:38 -0500 |
commit | b3c1e01a09d6af2dd7811a066ffcfc5171be2bed (patch) | |
tree | e59bb3618ed20fe05caba4c8cb7e292b7b2559b1 /arch/microblaze/kernel | |
parent | 7baab93f9297da3e42a8cecfbf91d5f22f415500 (diff) |
ptrace: use ptrace_request() in the remaining architectures
Use ptrace_request() in the three remaining architectures that didn't use it
(m68knommu, h8300, microblaze). This means:
- ptrace_request now handles PTRACE_{PEEK,POKE}{TEXT,DATA} and PTRACE_DETATCH
calls that were previously called directly, or in case of h8300 even open
coded.
- adds new support for PTRACE_SETOPTIONS/PTRACE_GETEVENTMSG/
PTRACE_GETSIGINFO/PTRACE_SETSIGINFO
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Michal Simek <monstr@monstr.eu>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/microblaze/kernel')
-rw-r--r-- | arch/microblaze/kernel/ptrace.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c index 4b3ac32754de..8c21d8b3cb0c 100644 --- a/arch/microblaze/kernel/ptrace.c +++ b/arch/microblaze/kernel/ptrace.c | |||
@@ -78,26 +78,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
78 | unsigned long copied; | 78 | unsigned long copied; |
79 | 79 | ||
80 | switch (request) { | 80 | switch (request) { |
81 | case PTRACE_PEEKTEXT: /* read word at location addr. */ | ||
82 | case PTRACE_PEEKDATA: | ||
83 | pr_debug("PEEKTEXT/PEEKDATA at %08lX\n", addr); | ||
84 | copied = access_process_vm(child, addr, &val, sizeof(val), 0); | ||
85 | rval = -EIO; | ||
86 | if (copied != sizeof(val)) | ||
87 | break; | ||
88 | rval = put_user(val, (unsigned long *)data); | ||
89 | break; | ||
90 | |||
91 | case PTRACE_POKETEXT: /* write the word at location addr. */ | ||
92 | case PTRACE_POKEDATA: | ||
93 | pr_debug("POKETEXT/POKEDATA to %08lX\n", addr); | ||
94 | rval = 0; | ||
95 | if (access_process_vm(child, addr, &data, sizeof(data), 1) | ||
96 | == sizeof(data)) | ||
97 | break; | ||
98 | rval = -EIO; | ||
99 | break; | ||
100 | |||
101 | /* Read/write the word at location ADDR in the registers. */ | 81 | /* Read/write the word at location ADDR in the registers. */ |
102 | case PTRACE_PEEKUSR: | 82 | case PTRACE_PEEKUSR: |
103 | case PTRACE_POKEUSR: | 83 | case PTRACE_POKEUSR: |
@@ -167,13 +147,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
167 | wake_up_process(child); | 147 | wake_up_process(child); |
168 | break; | 148 | break; |
169 | 149 | ||
170 | case PTRACE_DETACH: /* detach a process that was attached. */ | ||
171 | pr_debug("PTRACE_DETACH\n"); | ||
172 | rval = ptrace_detach(child, data); | ||
173 | break; | ||
174 | default: | 150 | default: |
175 | /* rval = ptrace_request(child, request, addr, data); noMMU */ | 151 | rval = ptrace_request(child, request, addr, data); |
176 | rval = -EIO; | ||
177 | } | 152 | } |
178 | return rval; | 153 | return rval; |
179 | } | 154 | } |