diff options
author | Andreas Arnez <arnez@linux.vnet.ibm.com> | 2014-07-16 16:50:49 +0000 |
---|---|---|
committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2014-08-07 17:31:50 +0200 |
commit | 8f1cee41f85e815d300cca3bf82e02a023dea43b (patch) | |
tree | 97c7b42cd896747f69b25cf98298b962b8454f19 | |
parent | c5741217d390041fc43ca83ad00b07355d40e9ad (diff) | |
download | gdb-8f1cee41f85e815d300cca3bf82e02a023dea43b.zip gdb-8f1cee41f85e815d300cca3bf82e02a023dea43b.tar.gz gdb-8f1cee41f85e815d300cca3bf82e02a023dea43b.tar.bz2 |
TILEGX Linux: Fill 'collect_regset' in regset structure.
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/tilegx-linux-tdep.c | 34 | ||||
-rw-r--r-- | gdb/tilegx-tdep.h | 1 |
3 files changed, 22 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 808887e..48f7d3c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 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> + * score-tdep.c (score7_linux_supply_gregset): Reduce to small stub that calls regcache_supply_regset and handles the EPC register separately. Move main logic to... diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c index 98b03db..184d00c 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 e24655c..864c798 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, |