regs.c revision 366c2f46d844f040458df9b7e35fc3b8527ed2d3
1#if HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#include <sys/types.h>
6#include <sys/ptrace.h>
7#include <asm/ptrace.h>
8
9#include "proc.h"
10#include "common.h"
11
12#if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR))
13# define PTRACE_PEEKUSER PTRACE_PEEKUSR
14#endif
15
16#if (!defined(PTRACE_POKEUSER) && defined(PTRACE_POKEUSR))
17# define PTRACE_POKEUSER PTRACE_POKEUSR
18#endif
19
20void *get_instruction_pointer(Process *proc)
21{
22	return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_PPC, 0);
23}
24
25void set_instruction_pointer(Process *proc, void *addr)
26{
27	ptrace(PTRACE_POKEUSER, proc->pid, 4 * PT_PPC, addr);
28}
29
30void *get_stack_pointer(Process *proc)
31{
32	return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_USP, 0);
33}
34
35void *get_return_addr(Process *proc, void *stack_pointer)
36{
37	return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_SRP, 0);
38}
39