2007-11-07 Markus Deuling <deuling@de.ibm.com>
authorMarkus Deuling <deuling@de.ibm.com>
Wed, 7 Nov 2007 06:36:57 +0000 (06:36 +0000)
committerMarkus Deuling <deuling@de.ibm.com>
Wed, 7 Nov 2007 06:36:57 +0000 (06:36 +0000)
* s390-nat.c (supply_gregset, fill_gregset): Use get_regcache_arch to
get at the current architecture by regcache.
(SUBOFF): Add gdbarch to macro definition.

gdb/ChangeLog
gdb/s390-nat.c

index 9450432..dc3d669 100644 (file)
@@ -1,5 +1,11 @@
 2007-11-07  Markus Deuling  <deuling@de.ibm.com>
 
+       * s390-nat.c (supply_gregset, fill_gregset): Use get_regcache_arch to
+       get at the current architecture by regcache.
+       (SUBOFF): Add gdbarch to macro definition.
+
+2007-11-07  Markus Deuling  <deuling@de.ibm.com>
+
        * gdbarch.sh (breakpoint_from_pc): Add gdbarch parameter.
        * gdbarch.{c,h}: Regenerate.
 
index 6fe6939..3904c51 100644 (file)
    we have to fix up the 64-bit registers we get from the kernel
    to make them look like 32-bit registers.  */
 #ifdef __s390x__
-#define SUBOFF(i) \
-       ((gdbarch_ptr_bit (current_gdbarch) == 32 \
+#define SUBOFF(gdbarch, i) \
+       ((gdbarch_ptr_bit (gdbarch) == 32 \
          && ((i) == S390_PSWA_REGNUM \
              || ((i) >= S390_R0_REGNUM && (i) <= S390_R15_REGNUM)))? 4 : 0)
 #else
-#define SUBOFF(i) 0
+#define SUBOFF(gdbarch, i) 0
 #endif
 
 
 void
 supply_gregset (struct regcache *regcache, const gregset_t *regp)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   int i;
   for (i = 0; i < S390_NUM_REGS; i++)
     if (regmap_gregset[i] != -1)
       regcache_raw_supply (regcache, i, 
-                          (const char *)regp + regmap_gregset[i] + SUBOFF (i));
+                          (const char *)regp + regmap_gregset[i]
+                            + SUBOFF (gdbarch, i));
 }
 
 /* Fill register REGNO (if it is a general-purpose register) in
@@ -77,12 +79,14 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
 void
 fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
   int i;
   for (i = 0; i < S390_NUM_REGS; i++)
     if (regmap_gregset[i] != -1)
       if (regno == -1 || regno == i)
        regcache_raw_collect (regcache, i, 
-                             (char *)regp + regmap_gregset[i] + SUBOFF (i));
+                             (char *)regp + regmap_gregset[i]
+                               + SUBOFF (gdbarch, i));
 }
 
 /* Fill GDB's register array with the floating-point register values