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