4
#include <kc_ptrace_arch.h>
8
PPC32_R_PC = 33, /* From asm/ptrace.h */
11
static unsigned long ppc32_get_pc(struct kc *kc, void *regs_cooked)
13
uint32_t *regs = (uint32_t *)regs_cooked;
15
return (unsigned long)regs[PPC32_R_PC];
18
static unsigned long ppc32_setup_breakpoint(struct kc *kc,
19
unsigned long addr, unsigned long old_data)
21
return 0x7fe00008; /* trap */
24
static void ppc32_adjust_pc_after_breakpoint(struct kc *kc,
27
uint32_t *regs = (uint32_t *)regs_cooked;
29
regs[PPC32_R_PC] -= 4;
32
static struct kc_ptrace_arch ppc32_arch =
34
.e_machines = (int[]){EM_PPC, EM_NONE},
35
.get_pc = ppc32_get_pc,
36
.setup_breakpoint = ppc32_setup_breakpoint,
37
.adjust_pc_after_breakpoint = ppc32_adjust_pc_after_breakpoint,