X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fsparc64nbsd-nat.c;h=c2738f0bf31e17fd749ee94c65e7248435eeed0e;hb=3ea89b92fb0765075a27a3a0239552ae880722ff;hp=b885139ea41fb7301f6e82230b8c30fc65b1160d;hpb=e6d4f032a508328be58d14fb08b323531c543c0f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/sparc64nbsd-nat.c b/gdb/sparc64nbsd-nat.c index b885139ea4..c2738f0bf3 100644 --- a/gdb/sparc64nbsd-nat.c +++ b/gdb/sparc64nbsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for NetBSD/sparc64. - Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003-2015 Free Software Foundation, Inc. This file is part of GDB. @@ -30,62 +30,64 @@ traced process is 32-bit or 64-bit. */ static void -sparc64nbsd_supply_gregset (const struct sparc_gregset *gregset, +sparc64nbsd_supply_gregset (const struct sparc_gregmap *gregmap, struct regcache *regcache, int regnum, const void *gregs) { int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32); if (sparc32) - sparc32_supply_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs); + sparc32_supply_gregset (&sparc32nbsd_gregmap, regcache, regnum, gregs); else - sparc64_supply_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs); + sparc64_supply_gregset (&sparc64nbsd_gregmap, regcache, regnum, gregs); } static void -sparc64nbsd_collect_gregset (const struct sparc_gregset *gregset, +sparc64nbsd_collect_gregset (const struct sparc_gregmap *gregmap, const struct regcache *regcache, int regnum, void *gregs) { int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32); if (sparc32) - sparc32_collect_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs); + sparc32_collect_gregset (&sparc32nbsd_gregmap, regcache, regnum, gregs); else - sparc64_collect_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs); + sparc64_collect_gregset (&sparc64nbsd_gregmap, regcache, regnum, gregs); } static void -sparc64nbsd_supply_fpregset (struct regcache *regcache, +sparc64nbsd_supply_fpregset (const struct sparc_fpregmap *fpregmap, + struct regcache *regcache, int regnum, const void *fpregs) { int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32); if (sparc32) - sparc32_supply_fpregset (regcache, regnum, fpregs); + sparc32_supply_fpregset (&sparc32_bsd_fpregmap, regcache, regnum, fpregs); else - sparc64_supply_fpregset (regcache, regnum, fpregs); + sparc64_supply_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs); } static void -sparc64nbsd_collect_fpregset (const struct regcache *regcache, +sparc64nbsd_collect_fpregset (const struct sparc_fpregmap *fpregmap, + const struct regcache *regcache, int regnum, void *fpregs) { int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32); if (sparc32) - sparc32_collect_fpregset (regcache, regnum, fpregs); + sparc32_collect_fpregset (&sparc32_bsd_fpregmap, regcache, regnum, fpregs); else - sparc64_collect_fpregset (regcache, regnum, fpregs); + sparc64_collect_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs); } /* Determine whether `gregset_t' contains register REGNUM. */ static int -sparc64nbsd_gregset_supplies_p (int regnum) +sparc64nbsd_gregset_supplies_p (struct gdbarch *gdbarch, int regnum) { - if (gdbarch_ptr_bit (current_gdbarch) == 32) - return sparc32_gregset_supplies_p (regnum); + if (gdbarch_ptr_bit (gdbarch) == 32) + return sparc32_gregset_supplies_p (gdbarch, regnum); /* Integer registers. */ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM) @@ -107,10 +109,10 @@ sparc64nbsd_gregset_supplies_p (int regnum) /* Determine whether `fpregset_t' contains register REGNUM. */ static int -sparc64nbsd_fpregset_supplies_p (int regnum) +sparc64nbsd_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum) { - if (gdbarch_ptr_bit (current_gdbarch) == 32) - return sparc32_fpregset_supplies_p (regnum); + if (gdbarch_ptr_bit (gdbarch) == 32) + return sparc32_fpregset_supplies_p (gdbarch, regnum); /* Floating-point registers. */ if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) @@ -140,9 +142,9 @@ sparc64nbsd_supply_pcb (struct regcache *regcache, struct pcb *pcb) /* The following is true for NetBSD 1.6.2: - The pcb contains %sp and %pc, %psr and %wim. From this information - we reconstruct the register state as it would look when we just - returned from cpu_switch(). */ + The pcb contains %sp and %pc, %pstate and %cwp. From this + information we reconstruct the register state as it would look + when we just returned from cpu_switch(). */ /* The stack pointer shouldn't be zero. */ if (pcb->pcb_sp == 0) @@ -154,7 +156,6 @@ sparc64nbsd_supply_pcb (struct regcache *regcache, struct pcb *pcb) read_memory(pcb->pcb_sp + BIAS - 176 + (11 * 8), (gdb_byte *)&pcb->pcb_pc, sizeof pcb->pcb_pc); - regcache_raw_supply (regcache, SPARC_SP_REGNUM, &pcb->pcb_sp); regcache_raw_supply (regcache, SPARC64_PC_REGNUM, &pcb->pcb_pc);