diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/s390-tdep.c | 28 |
2 files changed, 30 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9897b5d..9655109 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-05-06 Ulrich Weigand <uweigand@de.ibm.com> + + * s390-tdep.c (s390_collect_regset): New function. + (s390_gregset, s390x_gregset, s390_fpregset): Add it. + 2006-05-06 Nick Roberts <nickrob@snap.net.nz> * dwarf2read.c: Make LOC_OPTIMIZED_OUT the default value for a diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 4018ad1..b7b372d 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -444,19 +444,41 @@ s390_supply_regset (const struct regset *regset, struct regcache *regcache, } } +/* Collect register REGNUM from the register cache REGCACHE and store + it in the buffer specified by REGS and LEN as described by the + general-purpose register set REGSET. If REGNUM is -1, do this for + all registers in REGSET. */ +static void +s390_collect_regset (const struct regset *regset, + const struct regcache *regcache, + int regnum, void *regs, size_t len) +{ + const int *offset = regset->descr; + int i; + + for (i = 0; i < S390_NUM_REGS; i++) + { + if ((regnum == i || regnum == -1) && offset[i] != -1) + regcache_raw_collect (regcache, i, (char *)regs + offset[i]); + } +} + static const struct regset s390_gregset = { s390_regmap_gregset, - s390_supply_regset + s390_supply_regset, + s390_collect_regset }; static const struct regset s390x_gregset = { s390x_regmap_gregset, - s390_supply_regset + s390_supply_regset, + s390_collect_regset }; static const struct regset s390_fpregset = { s390_regmap_fpregset, - s390_supply_regset + s390_supply_regset, + s390_collect_regset }; /* Return the appropriate register set for the core section identified |