X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fppcnbsd-nat.c;h=db3453821e5cc6b58952d8be46a44c32dd08fe21;hb=9f1b45b0da430a7a7abf9e54acbe6f2ef9d3a763;hp=42d522eb48acef855d8d53a88f832cdf550b13ad;hpb=40a6adc1f847a722db47fa6dc14e4664d59f07b6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c index 42d522eb48..db3453821e 100644 --- a/gdb/ppcnbsd-nat.c +++ b/gdb/ppcnbsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for NetBSD/powerpc. - Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. @@ -19,13 +19,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include "defs.h" + #include #include #include #include #include -#include "defs.h" #include "gdbcore.h" #include "inferior.h" #include "regcache.h" @@ -40,9 +41,9 @@ /* Returns true if PT_GETREGS fetches this register. */ static int -getregs_supplies (int regnum) +getregs_supplies (struct gdbarch *gdbarch, int regnum) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); return ((regnum >= tdep->ppc_gp0_regnum && regnum < tdep->ppc_gp0_regnum + ppc_num_gprs) @@ -50,15 +51,15 @@ getregs_supplies (int regnum) || regnum == tdep->ppc_cr_regnum || regnum == tdep->ppc_xer_regnum || regnum == tdep->ppc_ctr_regnum - || regnum == gdbarch_pc_regnum (current_gdbarch)); + || regnum == gdbarch_pc_regnum (gdbarch)); } /* Like above, but for PT_GETFPREGS. */ static int -getfpregs_supplies (int regnum) +getfpregs_supplies (struct gdbarch *gdbarch, int regnum) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* FIXME: jimb/2004-05-05: Some PPC variants don't have floating point registers. Traditionally, GDB's register set has still @@ -70,7 +71,7 @@ getfpregs_supplies (int regnum) It's not clear to me how best to update this code, so this assert will alert the first person to encounter the NetBSD/E500 combination to the problem. */ - gdb_assert (ppc_floating_point_unit_p (current_gdbarch)); + gdb_assert (ppc_floating_point_unit_p (gdbarch)); return ((regnum >= tdep->ppc_fp0_regnum && regnum < tdep->ppc_fp0_regnum + ppc_num_fprs) @@ -78,13 +79,16 @@ getfpregs_supplies (int regnum) } static void -ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum) +ppcnbsd_fetch_inferior_registers (struct target_ops *ops, + struct regcache *regcache, int regnum) { - if (regnum == -1 || getregs_supplies (regnum)) + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + if (regnum == -1 || getregs_supplies (gdbarch, regnum)) { struct reg regs; - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), + if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't get registers")); @@ -92,11 +96,11 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum) regnum, ®s, sizeof regs); } - if (regnum == -1 || getfpregs_supplies (regnum)) + if (regnum == -1 || getfpregs_supplies (gdbarch, regnum)) { struct fpreg fpregs; - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), + if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get FP registers")); @@ -106,36 +110,39 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum) } static void -ppcnbsd_store_inferior_registers (struct regcache *regcache, int regnum) +ppcnbsd_store_inferior_registers (struct target_ops *ops, + struct regcache *regcache, int regnum) { - if (regnum == -1 || getregs_supplies (regnum)) + struct gdbarch *gdbarch = get_regcache_arch (regcache); + + if (regnum == -1 || getregs_supplies (gdbarch, regnum)) { struct reg regs; - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), + if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't get registers")); ppc_collect_gregset (&ppcnbsd_gregset, regcache, regnum, ®s, sizeof regs); - if (ptrace (PT_SETREGS, PIDGET (inferior_ptid), + if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) perror_with_name (_("Couldn't write registers")); } - if (regnum == -1 || getfpregs_supplies (regnum)) + if (regnum == -1 || getfpregs_supplies (gdbarch, regnum)) { struct fpreg fpregs; - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), + if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't get FP registers")); ppc_collect_fpregset (&ppcnbsd_fpregset, regcache, regnum, &fpregs, sizeof fpregs); - if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), + if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) perror_with_name (_("Couldn't set FP registers")); }