X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fppcnbsd-nat.c;h=b206110fc49da2a7f49e4711b2b1a694db181bc8;hb=39f770628a4eaf018fec8d55684bf2ec16ada9cc;hp=b754fa71a4893d1b5541053c555c83f40353146a;hpb=d0352a18a504a4e7b761f6b3264cf11347d8d056;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c index b754fa71a4..b206110fc4 100644 --- a/gdb/ppcnbsd-nat.c +++ b/gdb/ppcnbsd-nat.c @@ -1,5 +1,6 @@ /* Native-dependent code for PowerPC's running NetBSD, for GDB. - Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000 Free Software Foundation, Inc. + Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000, 2001 + Free Software Foundation, Inc. This file is part of GDB. @@ -26,6 +27,8 @@ #include "defs.h" #include "inferior.h" #include "gdbcore.h" +#include "ppc-tdep.h" +#include "regcache.h" #define RF(dst, src) \ memcpy(®isters[REGISTER_BYTE(dst)], &src, sizeof(src)) @@ -34,68 +37,73 @@ memcpy(&dst, ®isters[REGISTER_BYTE(src)], sizeof(dst)) void -fetch_inferior_registers (regno) - int regno; +fetch_inferior_registers (int regno) { struct reg inferior_registers; +#ifdef PT_GETFPREGS struct fpreg inferior_fp_registers; +#endif int i; - ptrace (PT_GETREGS, inferior_pid, + ptrace (PT_GETREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) & inferior_registers, 0); for (i = 0; i < 32; i++) RF (i, inferior_registers.fixreg[i]); - RF (LR_REGNUM, inferior_registers.lr); - RF (CR_REGNUM, inferior_registers.cr); - RF (XER_REGNUM, inferior_registers.xer); - RF (CTR_REGNUM, inferior_registers.ctr); + RF (PPC_LR_REGNUM, inferior_registers.lr); + RF (PPC_CR_REGNUM, inferior_registers.cr); + RF (PPC_XER_REGNUM, inferior_registers.xer); + RF (PPC_CTR_REGNUM, inferior_registers.ctr); RF (PC_REGNUM, inferior_registers.pc); - ptrace (PT_GETFPREGS, inferior_pid, - (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0); +#ifdef PT_GETFPREGS + ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), + (PTRACE_ARG3_TYPE) &inferior_fp_registers, 0); for (i = 0; i < 32; i++) - RF (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]); + RF (FP0_REGNUM + i, inferior_fp_registers.fpreg[i]); +#endif registers_fetched (); } void -store_inferior_registers (regno) - int regno; +store_inferior_registers (int regno) { struct reg inferior_registers; +#ifdef PT_SETFPREGS struct fpreg inferior_fp_registers; +#endif int i; for (i = 0; i < 32; i++) RS (i, inferior_registers.fixreg[i]); - RS (LR_REGNUM, inferior_registers.lr); - RS (CR_REGNUM, inferior_registers.cr); - RS (XER_REGNUM, inferior_registers.xer); - RS (CTR_REGNUM, inferior_registers.ctr); + RS (PPC_LR_REGNUM, inferior_registers.lr); + RS (PPC_CR_REGNUM, inferior_registers.cr); + RS (PPC_XER_REGNUM, inferior_registers.xer); + RS (PPC_CTR_REGNUM, inferior_registers.ctr); RS (PC_REGNUM, inferior_registers.pc); - ptrace (PT_SETREGS, inferior_pid, + ptrace (PT_SETREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) & inferior_registers, 0); +#ifdef PT_SETFPREGS for (i = 0; i < 32; i++) - RS (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]); - ptrace (PT_SETFPREGS, inferior_pid, + RS (FP0_REGNUM + i, inferior_fp_registers.fpreg[i]); + ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0); +#endif } struct md_core { struct reg intreg; +#ifdef PT_GETFPREGS struct fpreg freg; +#endif }; void -fetch_core_registers (core_reg_sect, core_reg_size, which, ignore) - char *core_reg_sect; - unsigned core_reg_size; - int which; - CORE_ADDR ignore; +fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, + CORE_ADDR ignore) { struct md_core *core_reg = (struct md_core *) core_reg_sect; int i; @@ -103,15 +111,17 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, ignore) /* Integer registers */ for (i = 0; i < 32; i++) RF (i, core_reg->intreg.fixreg[i]); - RF (LR_REGNUM, core_reg->intreg.lr); - RF (CR_REGNUM, core_reg->intreg.cr); - RF (XER_REGNUM, core_reg->intreg.xer); - RF (CTR_REGNUM, core_reg->intreg.ctr); + RF (PPC_LR_REGNUM, core_reg->intreg.lr); + RF (PPC_CR_REGNUM, core_reg->intreg.cr); + RF (PPC_XER_REGNUM, core_reg->intreg.xer); + RF (PPC_CTR_REGNUM, core_reg->intreg.ctr); RF (PC_REGNUM, core_reg->intreg.pc); +#ifdef PT_FPGETREGS /* Floating point registers */ for (i = 0; i < 32; i++) - RF (FP0_REGNUM + i, core_reg->freg.r_regs[i]); + RF (FP0_REGNUM + i, core_reg->freg.fpreg[i]); +#endif registers_fetched (); } @@ -129,7 +139,7 @@ static struct core_fns ppcnbsd_core_fns = }; void -_initialize_ppcnbsd_nat () +_initialize_ppcnbsd_nat (void) { add_core_fns (&ppcnbsd_core_fns); }