/* Extract the register values out of the core file and store
- them where `read_register' will find them.
+ them into REGCACHE.
CORE_REG_SECT points to the register values themselves, read into memory.
CORE_REG_SIZE is the size of that area.
*/
static void
-fetch_osf_core_registers (char *core_reg_sect, unsigned core_reg_size,
+fetch_osf_core_registers (struct regcache *regcache,
+ char *core_reg_sect, unsigned core_reg_size,
int which, CORE_ADDR reg_addr)
{
int regno;
for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
{
- if (CANNOT_FETCH_REGISTER (regno))
+ if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
{
- regcache_raw_supply (current_regcache, regno, NULL);
+ regcache_raw_supply (regcache, regno, NULL);
continue;
}
addr = 8 * core_reg_mapping[regno];
/* ??? UNIQUE is a new addition. Don't generate an error. */
if (regno == ALPHA_UNIQUE_REGNUM)
{
- regcache_raw_supply (current_regcache, regno, NULL);
+ regcache_raw_supply (regcache, regno, NULL);
continue;
}
if (bad_reg < 0)
}
else
{
- regcache_raw_supply (current_regcache, regno, core_reg_sect + addr);
+ regcache_raw_supply (regcache, regno, core_reg_sect + addr);
}
}
if (bad_reg >= 0)
{
- error (_("Register %s not found in core file."), REGISTER_NAME (bad_reg));
+ error (_("Register %s not found in core file."),
+ gdbarch_register_name (current_gdbarch, bad_reg));
}
}
-/* Map gdb internal register number to a ptrace ``address''.
- These ``addresses'' are defined in <sys/ptrace.h>, with
- the exception of ALPHA_UNIQUE_PTRACE_ADDR. */
-
-#define ALPHA_UNIQUE_PTRACE_ADDR 0
-
-CORE_ADDR
-register_addr (int regno, CORE_ADDR blockend)
-{
- if (regno == PC_REGNUM)
- return PC;
- if (regno == ALPHA_UNIQUE_REGNUM)
- return ALPHA_UNIQUE_PTRACE_ADDR;
- if (regno < FP0_REGNUM)
- return GPR_BASE + regno;
- else
- return FPR_BASE + regno - FP0_REGNUM;
-}
-
-int
-kernel_u_size (void)
-{
- return (sizeof (struct user));
-}
-
-#if defined(USE_PROC_FS) || defined(HAVE_GREGSET_T)
#include <sys/procfs.h>
-
/* Prototypes for supply_gregset etc. */
#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) ((regsetp)->regs)
-
-/* Locate the UNIQUE value within the gregset_t. */
-#define ALPHA_REGSET_UNIQUE(ptr) NULL
-
/*
* See the comment in m68k-tdep.c regarding the utility of these functions.
*/
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 = gregsetp->regs;
/* PC is in slot 32. */
- alpha_supply_int_regs (-1, regp, regp + 31, unique);
+ alpha_supply_int_regs (regcache, -1, regp, regp + 31, NULL);
}
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 = gregsetp->regs;
/* PC is in slot 32. */
- alpha_fill_int_regs (regno, regp, regp + 31, unique);
+ alpha_fill_int_regs (regcache, regno, regp, regp + 31, NULL);
}
/*
*/
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 = fpregsetp->regs;
/* 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 = fpregsetp->regs;
/* FPCR is in slot 32. */
- alpha_fill_fp_regs (regno, regp, regp + 31);
+ alpha_fill_fp_regs (regcache, regno, regp, regp + 31);
}
-#endif
\f
/* Register that we are able to handle alpha core file formats. */