Imported Upstream version 0.5.3
[platform/upstream/ltrace.git] / sysdeps / linux-gnu / m68k / regs.c
1 #include "config.h"
2
3 #include <sys/types.h>
4 #include <sys/ptrace.h>
5 #include <asm/ptrace.h>
6
7 #include "common.h"
8
9 #if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR))
10 # define PTRACE_PEEKUSER PTRACE_PEEKUSR
11 #endif
12
13 #if (!defined(PTRACE_POKEUSER) && defined(PTRACE_POKEUSR))
14 # define PTRACE_POKEUSER PTRACE_POKEUSR
15 #endif
16
17 void *
18 get_instruction_pointer(Process *proc) {
19         return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_PC, 0);
20 }
21
22 void
23 set_instruction_pointer(Process *proc, void *addr) {
24         ptrace(PTRACE_POKEUSER, proc->pid, 4 * PT_PC, addr);
25 }
26
27 void *
28 get_stack_pointer(Process *proc) {
29         return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_USP, 0);
30 }
31
32 void *
33 get_return_addr(Process *proc, void *stack_pointer) {
34         return (void *)ptrace(PTRACE_PEEKTEXT, proc->pid, stack_pointer, 0);
35 }
36
37 void
38 set_return_addr(Process *proc, void *addr) {
39         ptrace(PTRACE_POKETEXT, proc->pid, proc->stack_pointer, addr);
40 }