void ppcfbsd_fill_fpreg (char *fpregs, int regno) { struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); int i; /* FIXME: jimb/2004-05-05: Some PPC variants don't have floating point registers. Traditionally, GDB's register set has still listed the floating point registers for such machines, so this code is harmless. However, the new E500 port actually omits the floating point registers entirely from the register set --- they don't even have register numbers assigned to them. 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)); for (i = FP0_REGNUM; i <= FPLAST_REGNUM; i++) { if (regno == i || regno == -1) regcache_raw_collect (current_regcache, i, fpregs + FPREG_FPR_OFFSET (i - FP0_REGNUM)); } if (regno == tdep->ppc_fpscr_regnum || regno == -1) regcache_raw_collect (current_regcache, tdep->ppc_fpscr_regnum, fpregs + FPREG_FPSCR_OFFSET); }
void ppcnbsd_fill_fpreg (char *fpregs, int regno) { struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); int i; for (i = FP0_REGNUM; i <= FP0_REGNUM + 31; i++) { if (regno == i || regno == -1) regcache_collect (i, fpregs + FPREG_FPR_OFFSET (i - FP0_REGNUM)); } if (regno == tdep->ppc_fpscr_regnum || regno == -1) regcache_collect (tdep->ppc_fpscr_regnum, fpregs + FPREG_FPSCR_OFFSET); }