#include "defs.h"
#include "target.h"
+#include "regcache.h"
#include "linux-nat.h"
#include "alpha-tdep.h"
#include <sys/procfs.h>
#include "gregset.h"
-/* Given a pointer to either a gregset_t or fpregset_t, return a
- pointer to the first register. */
-#define ALPHA_REGSET_BASE(regsetp) ((long *) (regsetp))
-
-/* Given a pointer to a gregset_t, locate the UNIQUE value. */
-#define ALPHA_REGSET_UNIQUE(regsetp) ((long *)(regsetp) + 32)
-
/* The address of UNIQUE for ptrace. */
#define ALPHA_UNIQUE_PTRACE_ADDR 65
*/
void
-supply_gregset (gdb_gregset_t *gregsetp)
+supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
{
- long *regp = ALPHA_REGSET_BASE (gregsetp);
- void *unique = ALPHA_REGSET_UNIQUE (gregsetp);
+ const long *regp = (const long *)gregsetp;
- /* PC is in slot 32. */
- alpha_supply_int_regs (-1, regp, regp + 31, unique);
+ /* PC is in slot 32, UNIQUE is in slot 33. */
+ alpha_supply_int_regs (regcache, -1, regp, regp + 31, regp + 32);
}
void
-fill_gregset (gdb_gregset_t *gregsetp, int regno)
+fill_gregset (const struct regcache *regcache,
+ gdb_gregset_t *gregsetp, int regno)
{
- long *regp = ALPHA_REGSET_BASE (gregsetp);
- void *unique = ALPHA_REGSET_UNIQUE (gregsetp);
+ long *regp = (long *)gregsetp;
- /* PC is in slot 32. */
- alpha_fill_int_regs (regno, regp, regp + 31, unique);
+ /* PC is in slot 32, UNIQUE is in slot 33. */
+ alpha_fill_int_regs (regcache, regno, regp, regp + 31, regp + 32);
}
/*
*/
void
-supply_fpregset (gdb_fpregset_t *fpregsetp)
+supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
{
- long *regp = ALPHA_REGSET_BASE (fpregsetp);
+ const long *regp = (const long *)fpregsetp;
/* FPCR is in slot 32. */
- alpha_supply_fp_regs (-1, regp, regp + 31);
+ alpha_supply_fp_regs (regcache, -1, regp, regp + 31);
}
void
-fill_fpregset (gdb_fpregset_t *fpregsetp, int regno)
+fill_fpregset (const struct regcache *regcache,
+ gdb_fpregset_t *fpregsetp, int regno)
{
- long *regp = ALPHA_REGSET_BASE (fpregsetp);
+ long *regp = (long *)fpregsetp;
/* FPCR is in slot 32. */
- alpha_fill_fp_regs (regno, regp, regp + 31);
+ alpha_fill_fp_regs (regcache, regno, regp, regp + 31);
}
static CORE_ADDR
-alpha_linux_register_u_offset (int regno)
+alpha_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
{
- if (regno == PC_REGNUM)
+ if (regno == gdbarch_pc_regnum (current_gdbarch))
return PC;
if (regno == ALPHA_UNIQUE_REGNUM)
return ALPHA_UNIQUE_PTRACE_ADDR;
- if (regno < FP0_REGNUM)
+ if (regno < gdbarch_fp0_regnum (current_gdbarch))
return GPR_BASE + regno;
else
- return FPR_BASE + regno - FP0_REGNUM;
+ return FPR_BASE + regno - gdbarch_fp0_regnum (current_gdbarch);
}
void _initialialize_alpha_linux_nat (void);