TILEGX Linux: Fill 'collect_regset' in regset structure.

This commit is contained in:
Andreas Arnez
2014-07-16 16:50:49 +00:00
committed by Ulrich Weigand
parent c5741217d3
commit 8f1cee41f8
3 changed files with 22 additions and 23 deletions

@ -1,3 +1,13 @@
2014-08-07 Andreas Arnez <arnez@linux.vnet.ibm.com>
* tilegx-linux-tdep.c (tilegx_linux_supply_regset): Delete
function. Move logic to...
(tilegx_linux_regmap): ... this new register map.
(tilegx_linux_regset): Refer to register map, replace supply
method by regcache_supply_regset, and add collect method.
* tilegx-tdep.h (enum tilegx_regnum): New enum value
TILEGX_FIRST_EASY_REGNUM.
2014-08-07 Andreas Arnez <arnez@linux.vnet.ibm.com> 2014-08-07 Andreas Arnez <arnez@linux.vnet.ibm.com>
* score-tdep.c (score7_linux_supply_gregset): Reduce to small stub * score-tdep.c (score7_linux_supply_gregset): Reduce to small stub

@ -73,34 +73,22 @@ static const struct tramp_frame tilegx_linux_rt_sigframe =
tilegx_linux_sigframe_init tilegx_linux_sigframe_init
}; };
/* Supply raw registers from REGCACHE to REGS. */ /* Register map; must match struct pt_regs in "ptrace.h". */
static void static const struct regcache_map_entry tilegx_linux_regmap[] =
tilegx_linux_supply_regset (const struct regset *regset, {
struct regcache *regcache, { TILEGX_NUM_EASY_REGS, TILEGX_FIRST_EASY_REGNUM, 8 },
int regnum, const void *regs, size_t len) { 1, TILEGX_PC_REGNUM, 8 },
{ { 1, TILEGX_FAULTNUM_REGNUM, 8 },
struct gdbarch *arch = get_regcache_arch (regcache); { 0 }
const char *ptr = regs; };
int i;
/* This logic must match that of struct pt_regs in "ptrace.h". */
for (i = 0; i < TILEGX_NUM_EASY_REGS + 2; i++, ptr += tilegx_reg_size)
{
int gri = (i < TILEGX_NUM_EASY_REGS)
? i : (i == TILEGX_NUM_EASY_REGS)
? TILEGX_PC_REGNUM : TILEGX_FAULTNUM_REGNUM;
if (regnum == gri || regnum == -1)
regcache_raw_supply (regcache, gri, ptr);
}
}
/* TILE-Gx Linux kernel register set. */ /* TILE-Gx Linux kernel register set. */
static const struct regset tilegx_linux_regset = static const struct regset tilegx_linux_regset =
{ {
NULL, tilegx_linux_regmap,
tilegx_linux_supply_regset regcache_supply_regset, regcache_collect_regset
}; };
static const struct regset * static const struct regset *

@ -31,6 +31,7 @@
enum tilegx_regnum enum tilegx_regnum
{ {
TILEGX_R0_REGNUM, TILEGX_R0_REGNUM,
TILEGX_FIRST_EASY_REGNUM = TILEGX_R0_REGNUM,
TILEGX_R1_REGNUM, TILEGX_R1_REGNUM,
TILEGX_R2_REGNUM, TILEGX_R2_REGNUM,
TILEGX_R3_REGNUM, TILEGX_R3_REGNUM,