regs.c revision 61da33723c5fb09762e38bd39a26ee15d62ffebc
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 "common.h" 10 11#if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR)) 12# define PTRACE_PEEKUSER PTRACE_PEEKUSR 13#endif 14 15#if (!defined(PTRACE_POKEUSER) && defined(PTRACE_POKEUSR)) 16# define PTRACE_POKEUSER PTRACE_POKEUSR 17#endif 18 19void * 20get_instruction_pointer(Process *proc) { 21 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, sizeof(long)*PT_NIP, 0); 22} 23 24void 25set_instruction_pointer(Process *proc, void *addr) { 26 ptrace(PTRACE_POKEUSER, proc->pid, sizeof(long)*PT_NIP, addr); 27} 28 29void * 30get_stack_pointer(Process *proc) { 31 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, sizeof(long)*PT_R1, 0); 32} 33 34void * 35get_return_addr(Process *proc, void *stack_pointer) { 36 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, sizeof(long) * PT_LNK, 37 0); 38} 39 40/* Grab the value of CTR registers. */ 41void * 42get_count_register (Process *proc) { 43 return (void *) ptrace (PTRACE_PEEKUSER, proc->pid, 44 sizeof (long) * PT_CTR, 0); 45} 46