From 92f38ec2e1e1270e145474d983ef3dfa9f1685a2 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Sat, 6 May 2006 01:12:11 +0000 Subject: [PATCH] * s390-tdep.c (s390_collect_regset): New function. (s390_gregset, s390x_gregset, s390_fpregset): Add it. --- gdb/ChangeLog | 5 +++++ 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 + + * s390-tdep.c (s390_collect_regset): New function. + (s390_gregset, s390x_gregset, s390_fpregset): Add it. + 2006-05-06 Nick Roberts * 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 -- 2.7.4