diff options
Diffstat (limited to 'arch/um/sys-ppc/ptrace_user.c')
-rw-r--r-- | arch/um/sys-ppc/ptrace_user.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/um/sys-ppc/ptrace_user.c b/arch/um/sys-ppc/ptrace_user.c new file mode 100644 index 000000000000..ff0b9c077a13 --- /dev/null +++ b/arch/um/sys-ppc/ptrace_user.c | |||
@@ -0,0 +1,39 @@ | |||
1 | #include <errno.h> | ||
2 | #include <asm/ptrace.h> | ||
3 | #include "sysdep/ptrace.h" | ||
4 | |||
5 | int ptrace_getregs(long pid, unsigned long *regs_out) | ||
6 | { | ||
7 | int i; | ||
8 | for (i=0; i < sizeof(struct sys_pt_regs)/sizeof(PPC_REG); ++i) { | ||
9 | errno = 0; | ||
10 | regs_out->regs[i] = ptrace(PTRACE_PEEKUSR, pid, i*4, 0); | ||
11 | if (errno) { | ||
12 | return -errno; | ||
13 | } | ||
14 | } | ||
15 | return 0; | ||
16 | } | ||
17 | |||
18 | int ptrace_setregs(long pid, unsigned long *regs_in) | ||
19 | { | ||
20 | int i; | ||
21 | for (i=0; i < sizeof(struct sys_pt_regs)/sizeof(PPC_REG); ++i) { | ||
22 | if (i != 34 /* FIXME: PT_ORIG_R3 */ && i <= PT_MQ) { | ||
23 | if (ptrace(PTRACE_POKEUSR, pid, i*4, regs_in->regs[i]) < 0) { | ||
24 | return -errno; | ||
25 | } | ||
26 | } | ||
27 | } | ||
28 | return 0; | ||
29 | } | ||
30 | /* | ||
31 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
32 | * Emacs will notice this stuff at the end of the file and automatically | ||
33 | * adjust the settings for this buffer only. This must remain at the end | ||
34 | * of the file. | ||
35 | * --------------------------------------------------------------------------- | ||
36 | * Local variables: | ||
37 | * c-file-style: "linux" | ||
38 | * End: | ||
39 | */ | ||