+2007-10-10  Markus Deuling  <deuling@de.ibm.com>
+
+       * sparc-tdep.c (sparc_supply_rwindow, sparc_collect_rwindow): Use
+       get_regcache_arch to get at the current architecture by regcache.
+
+       * sparc64-tdep.c (sparc64_supply_gregset, sparc64_collect_gregset)
+       (sparc64_supply_fpregset, sparc64_collect_fpregset): Use
+       get_regcache_arch to get at the current architecture by regcache.
+
+       * sparc64nbsd-nat. (sparc64nbsd_supply_gregset)
+       (sparc64nbsd_collect_gregset, sparc64nbsd_supply_fpregset)
+       (sparc64nbsd_collect_fpregset): Use get_regcache_arch to get at the
+       current architecture by regcache.
+
 2007-10-10  Markus Deuling  <deuling@de.ibm.com>
 
        * remote-mips.c (mips_wait, mips_fetch_registers)
 
 
       /* Clear out the top half of the temporary buffer, and put the
         register value in the bottom half if we're in 64-bit mode.  */
-      if (gdbarch_ptr_bit (current_gdbarch) == 64)
+      if (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 64)
        {
          memset (buf, 0, 4);
          offset = 4;
       sp &= 0xffffffffUL;
 
       /* Only use the bottom half if we're in 64-bit mode.  */
-      if (gdbarch_ptr_bit (current_gdbarch) == 64)
+      if (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 64)
        offset = 4;
 
       for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
 
                        struct regcache *regcache,
                        int regnum, const void *gregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
   const gdb_byte *regs = gregs;
   int i;
 
                         const struct regcache *regcache,
                         int regnum, void *gregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
   gdb_byte *regs = gregs;
   int i;
 
 sparc64_supply_fpregset (struct regcache *regcache,
                         int regnum, const void *fpregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
   const gdb_byte *regs = fpregs;
   int i;
 
 sparc64_collect_fpregset (const struct regcache *regcache,
                          int regnum, void *fpregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
   gdb_byte *regs = fpregs;
   int i;
 
 
                            struct regcache *regcache,
                            int regnum, const void *gregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
 
   if (sparc32)
     sparc32_supply_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs);
                             const struct regcache *regcache,
                             int regnum, void *gregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
 
   if (sparc32)
     sparc32_collect_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs);
 sparc64nbsd_supply_fpregset (struct regcache *regcache,
                             int regnum, const void *fpregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
 
   if (sparc32)
     sparc32_supply_fpregset (regcache, regnum, fpregs);
 sparc64nbsd_collect_fpregset (const struct regcache *regcache,
                              int regnum, void *fpregs)
 {
-  int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+  int sparc32 = (gdbarch_ptr_bit (get_regcache_arch (regcache)) == 32);
 
   if (sparc32)
     sparc32_collect_fpregset (regcache, regnum, fpregs);