From: Andrew Cagney Date: Mon, 15 Jul 2002 16:50:51 +0000 (+0000) Subject: From Gerhard Tonn : X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=30413464fde363f43340064c168e7a78c3a81e82;p=binutils-gdb.git From Gerhard Tonn : * s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect instead of supply_register. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d649837fbed..214e9fe5db8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2002-07-15 Andrew Cagney + + From Gerhard Tonn : + * s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect + instead of supply_register. + 2002-07-15 Andrew Cagney * dwarf2cfi.c: Include "gdb_assert.h". diff --git a/gdb/s390-nat.c b/gdb/s390-nat.c index 19e89238374..b7f59188850 100644 --- a/gdb/s390-nat.c +++ b/gdb/s390-nat.c @@ -273,14 +273,22 @@ supply_fpregset (fpregset_t * fpregsetp) void fill_gregset (gregset_t * gregsetp, int regno) { + int regi; greg_t *gregp = (greg_t *) gregsetp; - if (regno >= S390_FIRST_CR && regno <= S390_LAST_CR) - supply_register (regno, NULL); - else if (regno != -1) - supply_register (regno, (char *) &gregp[regno]); - else - supply_gregset (gregsetp); + if (regno < 0) + { + regcache_collect (S390_PSWM_REGNUM, &gregp[S390_PSWM_REGNUM]); + regcache_collect (S390_PC_REGNUM, &gregp[S390_PC_REGNUM]); + for (regi = 0; regi < S390_NUM_GPRS; regi++) + regcache_collect (S390_GP0_REGNUM + regi, + &gregp[S390_GP0_REGNUM + regi]); + for (regi = 0; regi < S390_NUM_ACRS; regi++) + regcache_collect (S390_FIRST_ACR + regi, + &gregp[S390_FIRST_ACR + regi]); + } + else if (regno >= S390_PSWM_REGNUM && regno <= S390_LAST_ACR) + regcache_collect (regno, &gregp[regno]); } /* Given a pointer to a floating point register set in /proc format @@ -291,12 +299,18 @@ fill_gregset (gregset_t * gregsetp, int regno) void fill_fpregset (fpregset_t * fpregsetp, int regno) { - if (regno == -1) - supply_fpregset (fpregsetp); - else - supply_register (regno, - &((char *) fpregsetp)[REGISTER_BYTE (regno) - - REGISTER_BYTE (S390_FPC_REGNUM)]); + int regi; + + if (regno < 0) + { + regcache_collect (S390_FPC_REGNUM, &fpregsetp->fpc); + for (regi = 0; regi < S390_NUM_FPRS; regi++) + regcache_collect (S390_FP0_REGNUM + regi, &fpregsetp->fprs[regi]); + } + else if (regno == S390_FPC_REGNUM) + regcache_collect (S390_FPC_REGNUM, &fpregsetp->fpc); + else if (regno >= S390_FP0_REGNUM && regno <= S390_FPLAST_REGNUM) + regcache_collect (regno, &fpregsetp->fprs[regno - S390_FP0_REGNUM]); }