void mips_fill_fpregset (const struct regcache *regcache, mips_elf_fpregset_t *fpregsetp, int regno) { struct gdbarch *gdbarch = get_regcache_arch (regcache); char *from, *to; if ((regno >= gdbarch_fp0_regnum (gdbarch)) && (regno < gdbarch_fp0_regnum (gdbarch) + 32)) { to = (char *) (*fpregsetp + regno - gdbarch_fp0_regnum (gdbarch)); regcache_raw_collect (regcache, regno, to); } else if (regno == mips_regnum (gdbarch)->fp_control_status) { to = (char *) (*fpregsetp + 32); regcache_raw_collect (regcache, regno, to); } else if (regno == -1) { int regi; for (regi = 0; regi < 32; regi++) mips_fill_fpregset (regcache, fpregsetp, gdbarch_fp0_regnum (gdbarch) + regi); mips_fill_fpregset (regcache, fpregsetp, mips_regnum (gdbarch)->fp_control_status); } }
static void mips_fill_fpregset_wrapper (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len) { gdb_assert (len == sizeof (mips_elf_fpregset_t)); mips_fill_fpregset (regcache, (mips_elf_fpregset_t *)gregs, regnum); }
void fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *fpregsetp, int regno) { if (mips_isa_regsize (get_regcache_arch (regcache)) == 4) mips_fill_fpregset (regcache, (mips_elf_fpregset_t *) fpregsetp, regno); else mips64_fill_fpregset (regcache, (mips64_elf_fpregset_t *) fpregsetp, regno); }