int regnum;
   gdb_byte *buf;
 
-  regnum = gdbarch_dwarf2_reg_to_regnum (current_gdbarch, reg);
+  regnum = gdbarch_dwarf2_reg_to_regnum (gdbarch, reg);
 
   buf = alloca (register_size (gdbarch, regnum));
   frame_unwind_register (next_frame, regnum, buf);
 incomplete CFI data; DW_CFA_restore unspecified\n\
 register %s (#%d) at 0x%s"),
                       gdbarch_register_name
-                        (current_gdbarch, gdbarch_dwarf2_reg_to_regnum
-                                            (current_gdbarch, reg)),
-                      gdbarch_dwarf2_reg_to_regnum (current_gdbarch, reg),
+                        (gdbarch, gdbarch_dwarf2_reg_to_regnum (gdbarch, reg)),
+                      gdbarch_dwarf2_reg_to_regnum (gdbarch, reg),
                       paddr (fs->pc));
        }
       else
      (e.g. IBM S/390 and zSeries).  Those architectures should provide
      their own architecture-specific initialization function.  */
 
-  if (regnum == gdbarch_pc_regnum (current_gdbarch))
+  if (regnum == gdbarch_pc_regnum (gdbarch))
     reg->how = DWARF2_FRAME_REG_RA;
-  else if (regnum == gdbarch_sp_regnum (current_gdbarch))
+  else if (regnum == gdbarch_sp_regnum (gdbarch))
     reg->how = DWARF2_FRAME_REG_CFA;
 }
 
 {
   struct cleanup *old_chain;
   struct gdbarch *gdbarch = get_frame_arch (next_frame);
-  const int num_regs = gdbarch_num_regs (current_gdbarch)
-                      + gdbarch_num_pseudo_regs (current_gdbarch);
+  const int num_regs = gdbarch_num_regs (gdbarch)
+                      + gdbarch_num_pseudo_regs (gdbarch);
   struct dwarf2_frame_cache *cache;
   struct dwarf2_frame_state *fs;
   struct dwarf2_fde *fde;
     for (column = 0; column < fs->regs.num_regs; column++)
       {
        /* Use the GDB register number as the destination index.  */
-       int regnum = gdbarch_dwarf2_reg_to_regnum (current_gdbarch, column);
+       int regnum = gdbarch_dwarf2_reg_to_regnum (gdbarch, column);
 
        /* If there's no corresponding GDB register, ignore it.  */
        if (regnum < 0 || regnum >= num_regs)
       *lvalp = lval_register;
       *addrp = 0;
       *realnump = gdbarch_dwarf2_reg_to_regnum
-                   (current_gdbarch, cache->reg[regnum].loc.reg);
+                   (gdbarch, cache->reg[regnum].loc.reg);
       if (valuep)
        frame_unwind_register (next_frame, (*realnump), valuep);
       break;
           CORE_ADDR pc = cache->reg[regnum].loc.offset;
 
           regnum = gdbarch_dwarf2_reg_to_regnum
-                    (current_gdbarch, cache->retaddr_reg.loc.reg);
+                    (gdbarch, cache->retaddr_reg.loc.reg);
           pc += frame_unwind_register_unsigned (next_frame, regnum);
           pack_long (valuep, register_type (gdbarch, regnum), pc);
         }
 
            {
              bfd_byte regval[MAX_REGISTER_SIZE];
              int gdb_regnum = gdbarch_dwarf2_reg_to_regnum
-                                (current_gdbarch, p->value);
+                                (arch, p->value);
              get_frame_register (frame, gdb_regnum, regval);
              memcpy (contents + offset, regval, p->size);
            }
     {
       CORE_ADDR dwarf_regnum = dwarf_expr_fetch (ctx, 0);
       int gdb_regnum = gdbarch_dwarf2_reg_to_regnum
-                        (current_gdbarch, dwarf_regnum);
+                        (arch, dwarf_regnum);
       retval = value_from_register (SYMBOL_TYPE (var), gdb_regnum, frame);
     }
   else