From Gerhard Tonn <TON@de.ibm.com>:
authorAndrew Cagney <cagney@redhat.com>
Mon, 15 Jul 2002 16:50:51 +0000 (16:50 +0000)
committerAndrew Cagney <cagney@redhat.com>
Mon, 15 Jul 2002 16:50:51 +0000 (16:50 +0000)
* s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect
instead of supply_register.

gdb/ChangeLog
gdb/s390-nat.c

index d649837fbedbb01ad75ca6d0946e3ea133462e5c..214e9fe5db8f69779d540932816327cc9c0f20e4 100644 (file)
@@ -1,3 +1,9 @@
+2002-07-15  Andrew Cagney  <ac131313@redhat.com>
+
+       From Gerhard Tonn <TON@de.ibm.com>:
+       * s390-nat.c (fill_fpregset, fill_gregset): Use regcache_collect
+       instead of supply_register.
+
 2002-07-15  Andrew Cagney  <ac131313@redhat.com>
 
        * dwarf2cfi.c: Include "gdb_assert.h".
index 19e89238374c89506b8ff02cbec3f90acd198de4..b7f59188850e5bc6a40afe392c954ad80aa44ac1 100644 (file)
@@ -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]);
 }