From 8f1cee41f85e815d300cca3bf82e02a023dea43b Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Wed, 16 Jul 2014 16:50:49 +0000 Subject: [PATCH] TILEGX Linux: Fill 'collect_regset' in regset structure. --- gdb/ChangeLog | 10 ++++++++++ gdb/tilegx-linux-tdep.c | 34 +++++++++++----------------------- gdb/tilegx-tdep.h | 1 + 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 808887ebcf4..48f7d3c6282 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2014-08-07 Andreas Arnez + + * 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 * score-tdep.c (score7_linux_supply_gregset): Reduce to small stub diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c index 98b03dbcd84..184d00cf42c 100644 --- a/gdb/tilegx-linux-tdep.c +++ b/gdb/tilegx-linux-tdep.c @@ -73,34 +73,22 @@ static const struct tramp_frame tilegx_linux_rt_sigframe = tilegx_linux_sigframe_init }; -/* Supply raw registers from REGCACHE to REGS. */ +/* Register map; must match struct pt_regs in "ptrace.h". */ -static void -tilegx_linux_supply_regset (const struct regset *regset, - struct regcache *regcache, - int regnum, const void *regs, size_t len) -{ - struct gdbarch *arch = get_regcache_arch (regcache); - 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); - } -} +static const struct regcache_map_entry tilegx_linux_regmap[] = + { + { TILEGX_NUM_EASY_REGS, TILEGX_FIRST_EASY_REGNUM, 8 }, + { 1, TILEGX_PC_REGNUM, 8 }, + { 1, TILEGX_FAULTNUM_REGNUM, 8 }, + { 0 } + }; /* TILE-Gx Linux kernel register set. */ + static const struct regset tilegx_linux_regset = { - NULL, - tilegx_linux_supply_regset + tilegx_linux_regmap, + regcache_supply_regset, regcache_collect_regset }; static const struct regset * diff --git a/gdb/tilegx-tdep.h b/gdb/tilegx-tdep.h index e24655c15ec..864c7988976 100644 --- a/gdb/tilegx-tdep.h +++ b/gdb/tilegx-tdep.h @@ -31,6 +31,7 @@ enum tilegx_regnum { TILEGX_R0_REGNUM, + TILEGX_FIRST_EASY_REGNUM = TILEGX_R0_REGNUM, TILEGX_R1_REGNUM, TILEGX_R2_REGNUM, TILEGX_R3_REGNUM, -- 2.30.2