#include "solib-svr4.h"
-/* Shorthand for some register numbers used below. */
-#define MIPS_PC_REGNUM MIPS_EMBED_PC_REGNUM
-#define MIPS_FP0_REGNUM MIPS_EMBED_FP0_REGNUM
-#define MIPS_FSR_REGNUM MIPS_EMBED_FP0_REGNUM + 32
-
/* Core file support. */
/* Number of registers in `struct reg' from <machine/reg.h>. The
mips_fbsd_supply_fpregs (struct regcache *regcache, int regnum,
const void *fpregs, size_t regsize)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
const gdb_byte *regs = (const gdb_byte *) fpregs;
- int i;
+ int i, fp0num, fsrnum;
- for (i = MIPS_FP0_REGNUM; i <= MIPS_FSR_REGNUM; i++)
+ fp0num = mips_regnum (gdbarch)->fp0;
+ fsrnum = mips_regnum (gdbarch)->fp_control_status;
+ for (i = fp0num; i <= fsrnum; i++)
if (regnum == i || regnum == -1)
mips_fbsd_supply_reg (regcache, i,
- regs + (i - MIPS_FP0_REGNUM) * regsize, regsize);
+ regs + (i - fp0num) * regsize, regsize);
}
/* Supply the general-purpose registers stored in GREGS to REGCACHE.
mips_fbsd_supply_gregs (struct regcache *regcache, int regnum,
const void *gregs, size_t regsize)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
const gdb_byte *regs = (const gdb_byte *) gregs;
int i;
- for (i = 0; i <= MIPS_PC_REGNUM; i++)
+ for (i = 0; i <= mips_regnum (gdbarch)->pc; i++)
if (regnum == i || regnum == -1)
mips_fbsd_supply_reg (regcache, i, regs + i * regsize, regsize);
}
mips_fbsd_collect_fpregs (const struct regcache *regcache, int regnum,
void *fpregs, size_t regsize)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
gdb_byte *regs = (gdb_byte *) fpregs;
- int i;
+ int i, fp0num, fsrnum;
- for (i = MIPS_FP0_REGNUM; i <= MIPS_FSR_REGNUM; i++)
+ fp0num = mips_regnum (gdbarch)->fp0;
+ fsrnum = mips_regnum (gdbarch)->fp_control_status;
+ for (i = fp0num; i <= fsrnum; i++)
if (regnum == i || regnum == -1)
mips_fbsd_collect_reg (regcache, i,
- regs + (i - MIPS_FP0_REGNUM) * regsize, regsize);
+ regs + (i - fp0num) * regsize, regsize);
}
/* Collect the general-purpose registers from REGCACHE and store them
mips_fbsd_collect_gregs (const struct regcache *regcache, int regnum,
void *gregs, size_t regsize)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
gdb_byte *regs = (gdb_byte *) gregs;
int i;
- for (i = 0; i <= MIPS_PC_REGNUM; i++)
+ for (i = 0; i <= mips_regnum (gdbarch)->pc; i++)
if (regnum == i || regnum == -1)
mips_fbsd_collect_reg (regcache, i, regs + i * regsize, regsize);
}