From cb2a4ac5dae478fcd9d6e772530c3aba0576fc7a Mon Sep 17 00:00:00 2001
From: Daniel Jacobowitz <drow@false.org>
Date: Fri, 13 Apr 2007 14:25:12 +0000
Subject: [PATCH] Delete files for last commit.

---
 gdb/mips-mdebug-tdep.c |  489 ---------
 gdb/mips-mdebug-tdep.h |   28 -
 gdb/ocd.c              | 1172 ---------------------
 gdb/ocd.h              |  144 ---
 gdb/ppc-bdm.c          |  354 -------
 gdb/remote-e7000.c     | 2221 ----------------------------------------
 gdb/remote-hms.c       |  161 ---
 gdb/remote-utils.c     |  610 -----------
 gdb/remote-utils.h     |  135 ---
 gdb/scm-exp.c          |  497 ---------
 gdb/scm-lang.c         |  283 -----
 gdb/scm-lang.h         |   72 --
 gdb/scm-tags.h         |  380 -------
 gdb/scm-valprint.c     |  395 -------
 gdb/ser-e7kpc.c        |  440 --------
 gdb/sh3-rom.c          |  400 --------
 gdb/stop-gdb.c         |  109 --
 17 files changed, 7890 deletions(-)
 delete mode 100644 gdb/mips-mdebug-tdep.c
 delete mode 100644 gdb/mips-mdebug-tdep.h
 delete mode 100644 gdb/ocd.c
 delete mode 100644 gdb/ocd.h
 delete mode 100644 gdb/ppc-bdm.c
 delete mode 100644 gdb/remote-e7000.c
 delete mode 100644 gdb/remote-hms.c
 delete mode 100644 gdb/remote-utils.c
 delete mode 100644 gdb/remote-utils.h
 delete mode 100644 gdb/scm-exp.c
 delete mode 100644 gdb/scm-lang.c
 delete mode 100644 gdb/scm-lang.h
 delete mode 100644 gdb/scm-tags.h
 delete mode 100644 gdb/scm-valprint.c
 delete mode 100644 gdb/ser-e7kpc.c
 delete mode 100644 gdb/sh3-rom.c
 delete mode 100644 gdb/stop-gdb.c

diff --git a/gdb/mips-mdebug-tdep.c b/gdb/mips-mdebug-tdep.c
deleted file mode 100644
index 8e029c9949e..00000000000
--- a/gdb/mips-mdebug-tdep.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/* Target-dependent code for the MDEBUG MIPS architecture, for GDB,
-   the GNU Debugger.
-
-   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "frame.h"
-#include "mips-tdep.h"
-#include "trad-frame.h"
-#include "block.h"
-#include "symtab.h"
-#include "objfiles.h"
-#include "elf/mips.h"
-#include "elf-bfd.h"
-#include "gdb_assert.h"
-#include "frame-unwind.h"
-#include "frame-base.h"
-#include "mips-mdebug-tdep.h"
-#include "mdebugread.h"
-
-#define PROC_LOW_ADDR(proc) ((proc)->pdr.adr)	/* least address */
-#define PROC_FRAME_OFFSET(proc) ((proc)->pdr.frameoffset)
-#define PROC_FRAME_REG(proc) ((proc)->pdr.framereg)
-#define PROC_REG_MASK(proc) ((proc)->pdr.regmask)
-#define PROC_FREG_MASK(proc) ((proc)->pdr.fregmask)
-#define PROC_REG_OFFSET(proc) ((proc)->pdr.regoffset)
-#define PROC_FREG_OFFSET(proc) ((proc)->pdr.fregoffset)
-#define PROC_PC_REG(proc) ((proc)->pdr.pcreg)
-/* FIXME drow/2002-06-10: If a pointer on the host is bigger than a long,
-   this will corrupt pdr.iline.  Fortunately we don't use it.  */
-#define PROC_SYMBOL(proc) (*(struct symbol**)&(proc)->pdr.isym)
-#define _PROC_MAGIC_ 0x0F0F0F0F
-
-struct mips_objfile_private
-{
-  bfd_size_type size;
-  char *contents;
-};
-
-/* Global used to communicate between non_heuristic_proc_desc and
-   compare_pdr_entries within qsort ().  */
-static bfd *the_bfd;
-
-static int
-compare_pdr_entries (const void *a, const void *b)
-{
-  CORE_ADDR lhs = bfd_get_signed_32 (the_bfd, (bfd_byte *) a);
-  CORE_ADDR rhs = bfd_get_signed_32 (the_bfd, (bfd_byte *) b);
-
-  if (lhs < rhs)
-    return -1;
-  else if (lhs == rhs)
-    return 0;
-  else
-    return 1;
-}
-
-static const struct objfile_data *mips_pdr_data;
-
-static struct mdebug_extra_func_info *
-non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr)
-{
-  CORE_ADDR startaddr;
-  struct mdebug_extra_func_info *proc_desc;
-  struct block *b = block_for_pc (pc);
-  struct symbol *sym;
-  struct obj_section *sec;
-  struct mips_objfile_private *priv;
-
-  find_pc_partial_function (pc, NULL, &startaddr, NULL);
-  if (addrptr)
-    *addrptr = startaddr;
-
-  priv = NULL;
-
-  sec = find_pc_section (pc);
-  if (sec != NULL)
-    {
-      priv = (struct mips_objfile_private *) objfile_data (sec->objfile, mips_pdr_data);
-
-      /* Search the ".pdr" section generated by GAS.  This includes most of
-         the information normally found in ECOFF PDRs.  */
-
-      the_bfd = sec->objfile->obfd;
-      if (priv == NULL
-	  && (the_bfd->format == bfd_object
-	      && bfd_get_flavour (the_bfd) == bfd_target_elf_flavour
-	      && elf_elfheader (the_bfd)->e_ident[EI_CLASS] == ELFCLASS64))
-	{
-	  /* Right now GAS only outputs the address as a four-byte sequence.
-	     This means that we should not bother with this method on 64-bit
-	     targets (until that is fixed).  */
-
-	  priv = obstack_alloc (&sec->objfile->objfile_obstack,
-				sizeof (struct mips_objfile_private));
-	  priv->size = 0;
-	  set_objfile_data (sec->objfile, mips_pdr_data, priv);
-	}
-      else if (priv == NULL)
-	{
-	  asection *bfdsec;
-
-	  priv = obstack_alloc (&sec->objfile->objfile_obstack,
-				sizeof (struct mips_objfile_private));
-
-	  bfdsec = bfd_get_section_by_name (sec->objfile->obfd, ".pdr");
-	  if (bfdsec != NULL)
-	    {
-	      priv->size = bfd_section_size (sec->objfile->obfd, bfdsec);
-	      priv->contents = obstack_alloc (&sec->objfile->objfile_obstack,
-					      priv->size);
-	      bfd_get_section_contents (sec->objfile->obfd, bfdsec,
-					priv->contents, 0, priv->size);
-
-	      /* In general, the .pdr section is sorted.  However, in the
-	         presence of multiple code sections (and other corner cases)
-	         it can become unsorted.  Sort it so that we can use a faster
-	         binary search.  */
-	      qsort (priv->contents, priv->size / 32, 32,
-		     compare_pdr_entries);
-	    }
-	  else
-	    priv->size = 0;
-
-	  set_objfile_data (sec->objfile, mips_pdr_data, priv);
-	}
-      the_bfd = NULL;
-
-      if (priv->size != 0)
-	{
-	  int low, mid, high;
-	  char *ptr;
-	  CORE_ADDR pdr_pc;
-
-	  low = 0;
-	  high = priv->size / 32;
-
-	  /* We've found a .pdr section describing this objfile.  We want to
-	     find the entry which describes this code address.  The .pdr
-	     information is not very descriptive; we have only a function
-	     start address.  We have to look for the closest entry, because
-	     the local symbol at the beginning of this function may have
-	     been stripped - so if we ask the symbol table for the start
-	     address we may get a preceding global function.  */
-
-	  /* First, find the last .pdr entry starting at or before PC.  */
-	  do
-	    {
-	      mid = (low + high) / 2;
-
-	      ptr = priv->contents + mid * 32;
-	      pdr_pc = bfd_get_signed_32 (sec->objfile->obfd, ptr);
-	      pdr_pc += ANOFFSET (sec->objfile->section_offsets,
-				  SECT_OFF_TEXT (sec->objfile));
-
-	      if (pdr_pc > pc)
-		high = mid;
-	      else
-		low = mid + 1;
-	    }
-	  while (low != high);
-
-	  /* Both low and high point one past the PDR of interest.  If
-	     both are zero, that means this PC is before any region
-	     covered by a PDR, i.e. pdr_pc for the first PDR entry is
-	     greater than PC.  */
-	  if (low > 0)
-	    {
-	      ptr = priv->contents + (low - 1) * 32;
-	      pdr_pc = bfd_get_signed_32 (sec->objfile->obfd, ptr);
-	      pdr_pc += ANOFFSET (sec->objfile->section_offsets,
-				  SECT_OFF_TEXT (sec->objfile));
-	    }
-
-	  /* We don't have a range, so we have no way to know for sure
-	     whether we're in the correct PDR or a PDR for a preceding
-	     function and the current function was a stripped local
-	     symbol.  But if the PDR's PC is at least as great as the
-	     best guess from the symbol table, assume that it does cover
-	     the right area; if a .pdr section is present at all then
-	     nearly every function will have an entry.  The biggest exception
-	     will be the dynamic linker stubs; conveniently these are
-	     placed before .text instead of after.  */
-
-	  if (pc >= pdr_pc && pdr_pc >= startaddr)
-	    {
-	      struct symbol *sym = find_pc_function (pc);
-
-	      if (addrptr)
-		*addrptr = pdr_pc;
-
-	      /* Fill in what we need of the proc_desc.  */
-	      proc_desc = (struct mdebug_extra_func_info *)
-		obstack_alloc (&sec->objfile->objfile_obstack,
-			       sizeof (struct mdebug_extra_func_info));
-	      PROC_LOW_ADDR (proc_desc) = pdr_pc;
-
-	      PROC_FRAME_OFFSET (proc_desc)
-		= bfd_get_signed_32 (sec->objfile->obfd, ptr + 20);
-	      PROC_FRAME_REG (proc_desc) = bfd_get_32 (sec->objfile->obfd,
-						       ptr + 24);
-	      PROC_REG_MASK (proc_desc) = bfd_get_32 (sec->objfile->obfd,
-						      ptr + 4);
-	      PROC_FREG_MASK (proc_desc) = bfd_get_32 (sec->objfile->obfd,
-						       ptr + 12);
-	      PROC_REG_OFFSET (proc_desc)
-		= bfd_get_signed_32 (sec->objfile->obfd, ptr + 8);
-	      PROC_FREG_OFFSET (proc_desc)
-		= bfd_get_signed_32 (sec->objfile->obfd, ptr + 16);
-	      PROC_PC_REG (proc_desc) = bfd_get_32 (sec->objfile->obfd,
-						    ptr + 28);
-	      proc_desc->pdr.isym = (long) sym;
-
-	      return proc_desc;
-	    }
-	}
-    }
-
-  if (b == NULL)
-    return NULL;
-
-  if (startaddr > BLOCK_START (b))
-    {
-      /* This is the "pathological" case referred to in a comment in
-         print_frame_info.  It might be better to move this check into
-         symbol reading.  */
-      return NULL;
-    }
-
-  sym = lookup_symbol (MDEBUG_EFI_SYMBOL_NAME, b, LABEL_DOMAIN, 0, NULL);
-
-  /* If we never found a PDR for this function in symbol reading, then
-     examine prologues to find the information.  */
-  if (sym)
-    {
-      proc_desc = (struct mdebug_extra_func_info *) SYMBOL_VALUE (sym);
-      if (PROC_FRAME_REG (proc_desc) == -1)
-	return NULL;
-      else
-	return proc_desc;
-    }
-  else
-    return NULL;
-}
-
-struct mips_frame_cache
-{
-  CORE_ADDR base;
-  struct trad_frame_saved_reg *saved_regs;
-};
-
-static struct mips_frame_cache *
-mips_mdebug_frame_cache (struct frame_info *next_frame, void **this_cache)
-{
-  CORE_ADDR startaddr = 0;
-  struct mdebug_extra_func_info *proc_desc;
-  struct mips_frame_cache *cache;
-  struct gdbarch *gdbarch = get_frame_arch (next_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  /* r0 bit means kernel trap */
-  int kernel_trap;
-  /* What registers have been saved?  Bitmasks.  */
-  unsigned long gen_mask, float_mask;
-
-  if ((*this_cache) != NULL)
-    return (*this_cache);
-  cache = FRAME_OBSTACK_ZALLOC (struct mips_frame_cache);
-  (*this_cache) = cache;
-  cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
-
-  /* Get the mdebug proc descriptor.  */
-  proc_desc = non_heuristic_proc_desc (frame_pc_unwind (next_frame),
-				       &startaddr);
-  /* Must be true.  This is only called when the sniffer detected a
-     proc descriptor.  */
-  gdb_assert (proc_desc != NULL);
-
-  /* Extract the frame's base.  */
-  cache->base = (frame_unwind_register_signed (next_frame, NUM_REGS + PROC_FRAME_REG (proc_desc))
-		 + PROC_FRAME_OFFSET (proc_desc));
-
-  kernel_trap = PROC_REG_MASK (proc_desc) & 1;
-  gen_mask = kernel_trap ? 0xFFFFFFFF : PROC_REG_MASK (proc_desc);
-  float_mask = kernel_trap ? 0xFFFFFFFF : PROC_FREG_MASK (proc_desc);
-  
-  /* Must be true.  The in_prologue case is left for the heuristic
-     unwinder.  This is always used on kernel traps.  */
-  gdb_assert (!in_prologue (frame_pc_unwind (next_frame), PROC_LOW_ADDR (proc_desc))
-	      || kernel_trap);
-
-  /* Fill in the offsets for the registers which gen_mask says were
-     saved.  */
-  {
-    CORE_ADDR reg_position = (cache->base + PROC_REG_OFFSET (proc_desc));
-    int ireg;
-
-    for (ireg = MIPS_NUMREGS - 1; gen_mask; --ireg, gen_mask <<= 1)
-      if (gen_mask & 0x80000000)
-	{
-	  cache->saved_regs[NUM_REGS + ireg].addr = reg_position;
-	  reg_position -= mips_abi_regsize (gdbarch);
-	}
-  }
-
-  /* Fill in the offsets for the registers which float_mask says were
-     saved.  */
-  {
-    CORE_ADDR reg_position = (cache->base
-			      + PROC_FREG_OFFSET (proc_desc));
-    int ireg;
-    /* Fill in the offsets for the float registers which float_mask
-       says were saved.  */
-    for (ireg = MIPS_NUMREGS - 1; float_mask; --ireg, float_mask <<= 1)
-      if (float_mask & 0x80000000)
-	{
-	  if (mips_abi_regsize (gdbarch) == 4
-	      && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-	    {
-	      /* On a big endian 32 bit ABI, floating point registers
-	         are paired to form doubles such that the most
-	         significant part is in $f[N+1] and the least
-	         significant in $f[N] vis: $f[N+1] ||| $f[N].  The
-	         registers are also spilled as a pair and stored as a
-	         double.
-
-	         When little-endian the least significant part is
-	         stored first leading to the memory order $f[N] and
-	         then $f[N+1].
-
-	         Unfortunately, when big-endian the most significant
-	         part of the double is stored first, and the least
-	         significant is stored second.  This leads to the
-	         registers being ordered in memory as firt $f[N+1] and
-	         then $f[N].
-
-	         For the big-endian case make certain that the
-	         addresses point at the correct (swapped) locations
-	         $f[N] and $f[N+1] pair (keep in mind that
-	         reg_position is decremented each time through the
-	         loop).  */
-	      if ((ireg & 1))
-		cache->saved_regs[NUM_REGS + mips_regnum (current_gdbarch)->fp0 + ireg]
-		  .addr = reg_position - mips_abi_regsize (gdbarch);
-	      else
-		cache->saved_regs[NUM_REGS + mips_regnum (current_gdbarch)->fp0 + ireg]
-		  .addr = reg_position + mips_abi_regsize (gdbarch);
-	    }
-	  else
-	    cache->saved_regs[NUM_REGS + mips_regnum (current_gdbarch)->fp0 + ireg]
-	      .addr = reg_position;
-	  reg_position -= mips_abi_regsize (gdbarch);
-	}
-
-    cache->saved_regs[NUM_REGS + mips_regnum (current_gdbarch)->pc]
-      = cache->saved_regs[NUM_REGS + MIPS_RA_REGNUM];
-  }
-
-  /* SP_REGNUM, contains the value and not the address.  */
-  trad_frame_set_value (cache->saved_regs, NUM_REGS + MIPS_SP_REGNUM, cache->base);
-
-  return (*this_cache);
-}
-
-static void
-mips_mdebug_frame_this_id (struct frame_info *next_frame, void **this_cache,
-			   struct frame_id *this_id)
-{
-  struct mips_frame_cache *info = mips_mdebug_frame_cache (next_frame,
-							   this_cache);
-  (*this_id) = frame_id_build (info->base,
-			       frame_func_unwind (next_frame, NORMAL_FRAME));
-}
-
-static void
-mips_mdebug_frame_prev_register (struct frame_info *next_frame,
-				 void **this_cache,
-				 int regnum, int *optimizedp,
-				 enum lval_type *lvalp, CORE_ADDR *addrp,
-				 int *realnump, gdb_byte *valuep)
-{
-  struct mips_frame_cache *info = mips_mdebug_frame_cache (next_frame,
-							   this_cache);
-  trad_frame_get_prev_register (next_frame, info->saved_regs, regnum,
-				optimizedp, lvalp, addrp, realnump, valuep);
-}
-
-static const struct frame_unwind mips_mdebug_frame_unwind =
-{
-  NORMAL_FRAME,
-  mips_mdebug_frame_this_id,
-  mips_mdebug_frame_prev_register
-};
-
-static const struct frame_unwind *
-mips_mdebug_frame_sniffer (struct frame_info *next_frame)
-{
-  CORE_ADDR pc = frame_unwind_address_in_block (next_frame, NORMAL_FRAME);
-  CORE_ADDR startaddr = 0;
-  struct mdebug_extra_func_info *proc_desc;
-  int kernel_trap;
-
-  /* Don't use this on MIPS16.  */
-  if (mips_pc_is_mips16 (pc))
-    return NULL;
-
-  /* Only use the mdebug frame unwinder on mdebug frames where all the
-     registers have been saved.  Leave hard cases such as no mdebug or
-     in prologue for the heuristic unwinders.  */
-
-  proc_desc = non_heuristic_proc_desc (pc, &startaddr);
-  if (proc_desc == NULL)
-    return NULL;
-
-  /* Not sure exactly what kernel_trap means, but if it means the
-     kernel saves the registers without a prologue doing it, we better
-     not examine the prologue to see whether registers have been saved
-     yet.  */
-  kernel_trap = PROC_REG_MASK (proc_desc) & 1;
-  if (kernel_trap)
-    return &mips_mdebug_frame_unwind;
-
-  /* In any frame other than the innermost or a frame interrupted by a
-     signal, we assume that all registers have been saved.  This
-     assumes that all register saves in a function happen before the
-     first function call.  */
-  if (!in_prologue (pc, PROC_LOW_ADDR (proc_desc)))
-    return &mips_mdebug_frame_unwind;
-
-  return NULL;
-}
-
-static CORE_ADDR
-mips_mdebug_frame_base_address (struct frame_info *next_frame,
-				void **this_cache)
-{
-  struct mips_frame_cache *info = mips_mdebug_frame_cache (next_frame,
-							   this_cache);
-  return info->base;
-}
-
-static const struct frame_base mips_mdebug_frame_base = {
-  &mips_mdebug_frame_unwind,
-  mips_mdebug_frame_base_address,
-  mips_mdebug_frame_base_address,
-  mips_mdebug_frame_base_address
-};
-
-static const struct frame_base *
-mips_mdebug_frame_base_sniffer (struct frame_info *next_frame)
-{
-  if (mips_mdebug_frame_sniffer (next_frame) != NULL)
-    return &mips_mdebug_frame_base;
-  else
-    return NULL;
-}
-
-void
-mips_mdebug_append_sniffers (struct gdbarch *gdbarch)
-{
-  frame_unwind_append_sniffer (gdbarch, mips_mdebug_frame_sniffer);
-  frame_base_append_sniffer (gdbarch, mips_mdebug_frame_base_sniffer);
-}
-
-
-extern void _initialize_mips_mdebug_tdep (void);
-void
-_initialize_mips_mdebug_tdep (void)
-{
-  mips_pdr_data = register_objfile_data ();
-}
diff --git a/gdb/mips-mdebug-tdep.h b/gdb/mips-mdebug-tdep.h
deleted file mode 100644
index 9c1430cf04e..00000000000
--- a/gdb/mips-mdebug-tdep.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Target-dependent code for the MDEBUG MIPS architecture, for GDB,
-   the GNU Debugger.
-
-   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#ifndef MIPS_MDEBUG_TDEP_H
-#define MIPS_MDEBUG_TDEP_H
-
-extern void mips_mdebug_append_sniffers (struct gdbarch *gdbarch);
-
-#endif
diff --git a/gdb/ocd.c b/gdb/ocd.c
deleted file mode 100644
index f52990088aa..00000000000
--- a/gdb/ocd.c
+++ /dev/null
@@ -1,1172 +0,0 @@
-/* Target communications support for Macraigor Systems' On-Chip Debugging
-
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "gdb_string.h"
-#include <fcntl.h>
-#include "frame.h"
-#include "inferior.h"
-#include "bfd.h"
-#include "symfile.h"
-#include "target.h"
-#include "exceptions.h"
-#include "gdbcmd.h"
-#include "objfiles.h"
-#include "gdb-stabs.h"
-#include <sys/types.h>
-#include <signal.h>
-#include "serial.h"
-#include "ocd.h"
-#include "regcache.h"
-
-/* Prototypes for local functions */
-
-static int ocd_read_bytes (CORE_ADDR memaddr, char *myaddr, int len);
-
-static int ocd_start_remote (void *dummy);
-
-static int readchar (int timeout);
-
-static void ocd_interrupt (int signo);
-
-static void ocd_interrupt_twice (int signo);
-
-static void interrupt_query (void);
-
-static unsigned char *ocd_do_command (int cmd, int *statusp, int *lenp);
-
-static void ocd_put_packet (unsigned char *packet, int pktlen);
-
-static unsigned char *ocd_get_packet (int cmd, int *pktlen, int timeout);
-
-static struct target_ops *current_ops = NULL;
-
-static int last_run_status;
-
-/* Descriptor for I/O to remote machine.  Initialize it to NULL so that
-   ocd_open knows that we don't have a file open when the program
-   starts.  */
-static struct serial *ocd_desc = NULL;
-
-void
-ocd_error (char *s, int error_code)
-{
-  char buf[100];
-
-  fputs_filtered (s, gdb_stderr);
-  fputs_filtered (" ", gdb_stderr);
-
-  switch (error_code)
-    {
-    case 0x1:
-      s = "Unknown fault";
-      break;
-    case 0x2:
-      s = "Power failed";
-      break;
-    case 0x3:
-      s = "Cable disconnected";
-      break;
-    case 0x4:
-      s = "Couldn't enter OCD mode";
-      break;
-    case 0x5:
-      s = "Target stuck in reset";
-      break;
-    case 0x6:
-      s = "OCD hasn't been initialized";
-      break;
-    case 0x7:
-      s = "Write verify failed";
-      break;
-    case 0x8:
-      s = "Reg buff error (during MPC5xx fp reg read/write)";
-      break;
-    case 0x9:
-      s = "Invalid CPU register access attempt failed";
-      break;
-    case 0x11:
-      s = "Bus error";
-      break;
-    case 0x12:
-      s = "Checksum error";
-      break;
-    case 0x13:
-      s = "Illegal command";
-      break;
-    case 0x14:
-      s = "Parameter error";
-      break;
-    case 0x15:
-      s = "Internal error";
-      break;
-    case 0x80:
-      s = "Flash erase error";
-      break;
-    default:
-      sprintf (buf, "Unknown error code %d", error_code);
-      s = buf;
-    }
-
-  error (("%s"), s);
-}
-
-/*  Return nonzero if the thread TH is still alive on the remote system.  */
-
-int
-ocd_thread_alive (ptid_t th)
-{
-  return 1;
-}
-
-/* Clean up connection to a remote debugger.  */
-
-void
-ocd_close (int quitting)
-{
-  if (ocd_desc)
-    serial_close (ocd_desc);
-  ocd_desc = NULL;
-}
-
-/* Stub for catch_errors.  */
-
-static int
-ocd_start_remote (void *dummy)
-{
-  unsigned char buf[10], *p;
-  int pktlen;
-  int status;
-  int error_code;
-  int speed;
-  enum ocd_target_type target_type;
-
-  target_type = *(enum ocd_target_type *) dummy;
-
-  immediate_quit++;		/* Allow user to interrupt it */
-
-  serial_send_break (ocd_desc);	/* Wake up the wiggler */
-
-  speed = 80;			/* Divide clock by 4000 */
-
-  buf[0] = OCD_INIT;
-  buf[1] = speed >> 8;
-  buf[2] = speed & 0xff;
-  buf[3] = target_type;
-  ocd_put_packet (buf, 4);	/* Init OCD params */
-  p = ocd_get_packet (buf[0], &pktlen, remote_timeout);
-
-  if (pktlen < 2)
-    error (_("Truncated response packet from OCD device"));
-
-  status = p[1];
-  error_code = p[2];
-
-  if (error_code != 0)
-    ocd_error (_("OCD_INIT:"), error_code);
-
-  ocd_do_command (OCD_AYT, &status, &pktlen);
-
-  p = ocd_do_command (OCD_GET_VERSION, &status, &pktlen);
-
-  printf_unfiltered (_("[Wiggler version %x.%x, capability 0x%x]\n"),
-		     p[0], p[1], (p[2] << 16) | p[3]);
-
-  /* If processor is still running, stop it.  */
-
-  if (!(status & OCD_FLAG_BDM))
-    ocd_stop ();
-
-  /* When using a target box, we want to asynchronously return status when
-     target stops.  The OCD_SET_CTL_FLAGS command is ignored by Wigglers.dll
-     when using a parallel Wiggler */
-  buf[0] = OCD_SET_CTL_FLAGS;
-  buf[1] = 0;
-  buf[2] = 1;
-  ocd_put_packet (buf, 3);
-
-  p = ocd_get_packet (buf[0], &pktlen, remote_timeout);
-
-  if (pktlen < 2)
-    error (_("Truncated response packet from OCD device"));
-
-  status = p[1];
-  error_code = p[2];
-
-  if (error_code != 0)
-    ocd_error ("OCD_SET_CTL_FLAGS:", error_code);
-
-  immediate_quit--;
-
-/* This is really the job of start_remote however, that makes an assumption
-   that the target is about to print out a status message of some sort.  That
-   doesn't happen here (in fact, it may not be possible to get the monitor to
-   send the appropriate packet).  */
-
-  reinit_frame_cache ();
-  registers_changed ();
-  stop_pc = read_pc ();
-  print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
-
-  buf[0] = OCD_LOG_FILE;
-  buf[1] = 3;			/* close existing WIGGLERS.LOG */
-  ocd_put_packet (buf, 2);
-  p = ocd_get_packet (buf[0], &pktlen, remote_timeout);
-
-  buf[0] = OCD_LOG_FILE;
-  buf[1] = 2;			/* append to existing WIGGLERS.LOG */
-  ocd_put_packet (buf, 2);
-  p = ocd_get_packet (buf[0], &pktlen, remote_timeout);
-
-  return 1;
-}
-
-/* Open a connection to a remote debugger.
-   NAME is the filename used for communication.  */
-
-void
-ocd_open (char *name, int from_tty, enum ocd_target_type target_type,
-	  struct target_ops *ops)
-{
-  unsigned char buf[10], *p;
-  int pktlen;
-
-  if (name == 0)
-    error (_("To open an OCD connection, you need to specify the\n\
-device the OCD device is attached to (e.g. /dev/ttya)."));
-
-  target_preopen (from_tty);
-
-  current_ops = ops;
-
-  unpush_target (current_ops);
-
-  ocd_desc = serial_open (name);
-  if (!ocd_desc)
-    perror_with_name (name);
-
-  if (baud_rate != -1)
-    {
-      if (serial_setbaudrate (ocd_desc, baud_rate))
-	{
-	  serial_close (ocd_desc);
-	  perror_with_name (name);
-	}
-    }
-
-  serial_raw (ocd_desc);
-
-  /* If there is something sitting in the buffer we might take it as a
-     response to a command, which would be bad.  */
-  serial_flush_input (ocd_desc);
-
-  if (from_tty)
-    {
-      puts_filtered ("Remote target wiggler connected to ");
-      puts_filtered (name);
-      puts_filtered ("\n");
-    }
-  push_target (current_ops);	/* Switch to using remote target now */
-
-  /* Without this, some commands which require an active target (such as kill)
-     won't work.  This variable serves (at least) double duty as both the pid
-     of the target process (if it has such), and as a flag indicating that a
-     target is active.  These functions should be split out into seperate
-     variables, especially since GDB will someday have a notion of debugging
-     several processes.  */
-
-  inferior_ptid = pid_to_ptid (42000);
-  /* Start the remote connection; if error (0), discard this target.
-     In particular, if the user quits, be sure to discard it
-     (we'd be in an inconsistent state otherwise).  */
-  if (!catch_errors (ocd_start_remote, &target_type,
-		     "Couldn't establish connection to remote target\n",
-		     RETURN_MASK_ALL))
-    {
-      pop_target ();
-      error (_("Failed to connect to OCD."));
-    }
-}
-
-/* This takes a program previously attached to and detaches it.  After
-   this is done, GDB can be used to debug some other program.  We
-   better not have left any breakpoints in the target program or it'll
-   die when it hits one.  */
-
-void
-ocd_detach (char *args, int from_tty)
-{
-  if (args)
-    error (_("Argument given to \"detach\" when remotely debugging."));
-
-  pop_target ();
-  if (from_tty)
-    puts_filtered ("Ending remote debugging.\n");
-}
-
-/* Tell the remote machine to resume.  */
-
-void
-ocd_resume (ptid_t ptid, int step, enum target_signal siggnal)
-{
-  int pktlen;
-
-  if (step)
-    ocd_do_command (OCD_STEP, &last_run_status, &pktlen);
-  else
-    ocd_do_command (OCD_RUN, &last_run_status, &pktlen);
-}
-
-void
-ocd_stop (void)
-{
-  int status;
-  int pktlen;
-
-  ocd_do_command (OCD_STOP, &status, &pktlen);
-
-  if (!(status & OCD_FLAG_BDM))
-    error (_("Can't stop target via BDM"));
-}
-
-static volatile int ocd_interrupt_flag;
-
-/* Send ^C to target to halt it.  Target will respond, and send us a
-   packet.  */
-
-static void
-ocd_interrupt (int signo)
-{
-  /* If this doesn't work, try more severe steps.  */
-  signal (signo, ocd_interrupt_twice);
-
-  if (remote_debug)
-    printf_unfiltered ("ocd_interrupt called\n");
-
-  {
-    char buf[1];
-
-    ocd_stop ();
-    buf[0] = OCD_AYT;
-    ocd_put_packet (buf, 1);
-    ocd_interrupt_flag = 1;
-  }
-}
-
-static void (*ofunc) ();
-
-/* The user typed ^C twice.  */
-static void
-ocd_interrupt_twice (int signo)
-{
-  signal (signo, ofunc);
-
-  interrupt_query ();
-
-  signal (signo, ocd_interrupt);
-}
-
-/* Ask the user what to do when an interrupt is received.  */
-
-static void
-interrupt_query (void)
-{
-  target_terminal_ours ();
-
-  if (query ("Interrupted while waiting for the program.\n\
-Give up (and stop debugging it)? "))
-    {
-      target_mourn_inferior ();
-      deprecated_throw_reason (RETURN_QUIT);
-    }
-
-  target_terminal_inferior ();
-}
-
-/* If nonzero, ignore the next kill.  */
-static int kill_kludge;
-
-/* Wait until the remote machine stops, then return,
-   storing status in STATUS just as `wait' would.
-   Returns "pid" (though it's not clear what, if anything, that
-   means in the case of this target).  */
-
-int
-ocd_wait (void)
-{
-  unsigned char *p;
-  int error_code;
-  int pktlen;
-  char buf[1];
-
-  ocd_interrupt_flag = 0;
-
-  /* Target might already be stopped by the time we get here. */
-  /* If we aren't already stopped, we need to loop until we've dropped
-     back into BDM mode */
-
-  while (!(last_run_status & OCD_FLAG_BDM))
-    {
-      buf[0] = OCD_AYT;
-      ocd_put_packet (buf, 1);
-      p = ocd_get_packet (OCD_AYT, &pktlen, -1);
-
-      ofunc = (void (*)()) signal (SIGINT, ocd_interrupt);
-      signal (SIGINT, ofunc);
-
-      if (pktlen < 2)
-	error (_("Truncated response packet from OCD device"));
-
-      last_run_status = p[1];
-      error_code = p[2];
-
-      if (error_code != 0)
-	ocd_error ("target_wait:", error_code);
-
-      if (last_run_status & OCD_FLAG_PWF)
-	error (_("OCD device lost VCC at BDM interface."));
-      else if (last_run_status & OCD_FLAG_CABLE_DISC)
-	error (_("OCD device cable appears to have been disconnected."));
-    }
-
-  if (ocd_interrupt_flag)
-    return 1;
-  else
-    return 0;
-}
-
-/* Read registers from the OCD device.  Specify the starting and ending
-   register number.  Return the number of regs actually read in *NUMREGS.
-   Returns a pointer to a static array containing the register contents.  */
-
-unsigned char *
-ocd_read_bdm_registers (int first_bdm_regno, int last_bdm_regno, int *reglen)
-{
-  unsigned char buf[10];
-  int i;
-  unsigned char *p;
-  unsigned char *regs;
-  int error_code, status;
-  int pktlen;
-
-  buf[0] = OCD_READ_REGS;
-  buf[1] = first_bdm_regno >> 8;
-  buf[2] = first_bdm_regno & 0xff;
-  buf[3] = last_bdm_regno >> 8;
-  buf[4] = last_bdm_regno & 0xff;
-
-  ocd_put_packet (buf, 5);
-  p = ocd_get_packet (OCD_READ_REGS, &pktlen, remote_timeout);
-
-  status = p[1];
-  error_code = p[2];
-
-  if (error_code != 0)
-    ocd_error ("read_bdm_registers:", error_code);
-
-  i = p[3];
-  if (i == 0)
-    i = 256;
-
-  if (i > pktlen - 4
-      || ((i & 3) != 0))
-    error (_("Register block size bad:  %d"), i);
-
-  *reglen = i;
-
-  regs = p + 4;
-
-  return regs;
-}
-
-/* Read register BDM_REGNO and returns its value ala read_register() */
-
-CORE_ADDR
-ocd_read_bdm_register (int bdm_regno)
-{
-  int reglen;
-  unsigned char *p;
-  CORE_ADDR regval;
-
-  p = ocd_read_bdm_registers (bdm_regno, bdm_regno, &reglen);
-  regval = extract_unsigned_integer (p, reglen);
-
-  return regval;
-}
-
-void
-ocd_write_bdm_registers (int first_bdm_regno, unsigned char *regptr, int reglen)
-{
-  unsigned char *buf;
-  unsigned char *p;
-  int error_code, status;
-  int pktlen;
-
-  buf = alloca (4 + reglen);
-
-  buf[0] = OCD_WRITE_REGS;
-  buf[1] = first_bdm_regno >> 8;
-  buf[2] = first_bdm_regno & 0xff;
-  buf[3] = reglen;
-  memcpy (buf + 4, regptr, reglen);
-
-  ocd_put_packet (buf, 4 + reglen);
-  p = ocd_get_packet (OCD_WRITE_REGS, &pktlen, remote_timeout);
-
-  if (pktlen < 3)
-    error (_("Truncated response packet from OCD device"));
-
-  status = p[1];
-  error_code = p[2];
-
-  if (error_code != 0)
-    ocd_error ("ocd_write_bdm_registers:", error_code);
-}
-
-void
-ocd_write_bdm_register (int bdm_regno, CORE_ADDR reg)
-{
-  unsigned char buf[4];
-
-  store_unsigned_integer (buf, 4, reg);
-
-  ocd_write_bdm_registers (bdm_regno, buf, 4);
-}
-
-void
-ocd_prepare_to_store (void)
-{
-}
-
-/* Write memory data directly to the remote machine.
-   This does not inform the data cache; the data cache uses this.
-   MEMADDR is the address in the remote memory space.
-   MYADDR is the address of the buffer in our space.
-   LEN is the number of bytes.
-
-   Returns number of bytes transferred, or 0 for error.  */
-
-static int write_mem_command = OCD_WRITE_MEM;
-
-int
-ocd_write_bytes (CORE_ADDR memaddr, char *myaddr, int len)
-{
-  char buf[256 + 10];
-  unsigned char *p;
-  int origlen;
-
-  origlen = len;
-
-  buf[0] = write_mem_command;
-  buf[5] = 1;			/* Write as bytes */
-  buf[6] = 0;			/* Don't verify */
-
-  while (len > 0)
-    {
-      int numbytes;
-      int pktlen;
-      int status, error_code;
-
-      numbytes = min (len, 256 - 8);
-
-      buf[1] = memaddr >> 24;
-      buf[2] = memaddr >> 16;
-      buf[3] = memaddr >> 8;
-      buf[4] = memaddr;
-
-      buf[7] = numbytes;
-
-      memcpy (&buf[8], myaddr, numbytes);
-      ocd_put_packet (buf, 8 + numbytes);
-      p = ocd_get_packet (OCD_WRITE_MEM, &pktlen, remote_timeout);
-      if (pktlen < 3)
-	error (_("Truncated response packet from OCD device"));
-
-      status = p[1];
-      error_code = p[2];
-
-      if (error_code == 0x11)	/* Got a bus error? */
-	{
-	  CORE_ADDR error_address;
-
-	  error_address = p[3] << 24;
-	  error_address |= p[4] << 16;
-	  error_address |= p[5] << 8;
-	  error_address |= p[6];
-	  numbytes = error_address - memaddr;
-
-	  len -= numbytes;
-
-	  errno = EIO;
-
-	  break;
-	}
-      else if (error_code != 0)
-	ocd_error ("ocd_write_bytes:", error_code);
-
-      len -= numbytes;
-      memaddr += numbytes;
-      myaddr += numbytes;
-    }
-
-  return origlen - len;
-}
-
-/* Read memory data directly from the remote machine.
-   This does not use the data cache; the data cache uses this.
-   MEMADDR is the address in the remote memory space.
-   MYADDR is the address of the buffer in our space.
-   LEN is the number of bytes.
-
-   Returns number of bytes transferred, or 0 for error.  */
-
-static int
-ocd_read_bytes (CORE_ADDR memaddr, char *myaddr, int len)
-{
-  char buf[256 + 10];
-  unsigned char *p;
-  int origlen;
-
-  origlen = len;
-
-  buf[0] = OCD_READ_MEM;
-  buf[5] = 1;			/* Read as bytes */
-
-  while (len > 0)
-    {
-      int numbytes;
-      int pktlen;
-      int status, error_code;
-
-      numbytes = min (len, 256 - 7);
-
-      buf[1] = memaddr >> 24;
-      buf[2] = memaddr >> 16;
-      buf[3] = memaddr >> 8;
-      buf[4] = memaddr;
-
-      buf[6] = numbytes;
-
-      ocd_put_packet (buf, 7);
-      p = ocd_get_packet (OCD_READ_MEM, &pktlen, remote_timeout);
-      if (pktlen < 4)
-	error (_("Truncated response packet from OCD device"));
-
-      status = p[1];
-      error_code = p[2];
-
-      if (error_code == 0x11)	/* Got a bus error? */
-	{
-	  CORE_ADDR error_address;
-
-	  error_address = p[3] << 24;
-	  error_address |= p[4] << 16;
-	  error_address |= p[5] << 8;
-	  error_address |= p[6];
-	  numbytes = error_address - memaddr;
-
-	  len -= numbytes;
-
-	  errno = EIO;
-
-	  break;
-	}
-      else if (error_code != 0)
-	ocd_error ("ocd_read_bytes:", error_code);
-
-      memcpy (myaddr, &p[4], numbytes);
-
-      len -= numbytes;
-      memaddr += numbytes;
-      myaddr += numbytes;
-    }
-
-  return origlen - len;
-}
-
-/* Read or write LEN bytes from inferior memory at MEMADDR, transferring
-   to or from debugger address MYADDR.  Write to inferior if SHOULD_WRITE is
-   nonzero.  Returns length of data written or read; 0 for error.  TARGET
-   is ignored.  */
-
-int
-ocd_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int should_write,
-		 struct mem_attrib *attrib, struct target_ops *target)
-{
-  int res;
-
-  if (should_write)
-    res = ocd_write_bytes (memaddr, myaddr, len);
-  else
-    res = ocd_read_bytes (memaddr, myaddr, len);
-
-  return res;
-}
-
-void
-ocd_files_info (struct target_ops *ignore)
-{
-  puts_filtered ("Debugging a target over a serial line.\n");
-}
-
-/* Stuff for dealing with the packets which are part of this protocol.
-   See comment at top of file for details.  */
-
-/* Read a single character from the remote side, handling wierd errors. */
-
-static int
-readchar (int timeout)
-{
-  int ch;
-
-  ch = serial_readchar (ocd_desc, timeout);
-
-  switch (ch)
-    {
-    case SERIAL_EOF:
-      error (_("Remote connection closed"));
-    case SERIAL_ERROR:
-      perror_with_name (_("Remote communication error"));
-    case SERIAL_TIMEOUT:
-    default:
-      return ch;
-    }
-}
-
-/* Send a packet to the OCD device.  The packet framed by a SYN character,
-   a byte count and a checksum.  The byte count only counts the number of
-   bytes between the count and the checksum.  A count of zero actually
-   means 256.  Any SYNs within the packet (including the checksum and
-   count) must be quoted.  The quote character must be quoted as well.
-   Quoting is done by replacing the character with the two-character sequence
-   DLE, {char} | 0100.  Note that the quoting mechanism has no effect on the
-   byte count.  */
-
-static void
-ocd_put_packet (unsigned char *buf, int len)
-{
-  unsigned char checksum;
-  unsigned char c;
-  unsigned char *packet, *packet_ptr;
-
-  packet = alloca (len + 1 + 1);	/* packet + SYN + checksum */
-  packet_ptr = packet;
-
-  checksum = 0;
-
-  *packet_ptr++ = 0x55;
-
-  while (len-- > 0)
-    {
-      c = *buf++;
-
-      checksum += c;
-      *packet_ptr++ = c;
-    }
-
-  *packet_ptr++ = -checksum;
-  if (serial_write (ocd_desc, packet, packet_ptr - packet))
-    perror_with_name (_("output_packet: write failed"));
-}
-
-/* Get a packet from the OCD device.  Timeout is only enforced for the
-   first byte of the packet.  Subsequent bytes are expected to arrive in
-   time <= remote_timeout.  Returns a pointer to a static buffer containing
-   the payload of the packet.  *LENP contains the length of the packet.
- */
-
-static unsigned char *
-ocd_get_packet (int cmd, int *lenp, int timeout)
-{
-  int ch;
-  int len;
-  static unsigned char packet[512];
-  unsigned char *packet_ptr;
-  unsigned char checksum;
-
-  ch = readchar (timeout);
-
-  if (ch < 0)
-    error (_("ocd_get_packet (readchar): %d"), ch);
-
-  if (ch != 0x55)
-    error (_("ocd_get_packet (readchar): %d"), ch);
-
-/* Found the start of a packet */
-
-  packet_ptr = packet;
-  checksum = 0;
-
-/* Read command char.  That sort of tells us how long the packet is. */
-
-  ch = readchar (timeout);
-
-  if (ch < 0)
-    error (_("ocd_get_packet (readchar): %d"), ch);
-
-  *packet_ptr++ = ch;
-  checksum += ch;
-
-/* Get status. */
-
-  ch = readchar (timeout);
-
-  if (ch < 0)
-    error (_("ocd_get_packet (readchar): %d"), ch);
-  *packet_ptr++ = ch;
-  checksum += ch;
-
-/* Get error code. */
-
-  ch = readchar (timeout);
-
-  if (ch < 0)
-    error (_("ocd_get_packet (readchar): %d"), ch);
-  *packet_ptr++ = ch;
-  checksum += ch;
-
-  switch (ch)			/* Figure out length of packet */
-    {
-    case 0x7:			/* Write verify error? */
-      len = 8;			/* write address, value read back */
-      break;
-    case 0x11:			/* Bus error? */
-      /* write address, read flag */
-    case 0x15:			/* Internal error */
-      len = 5;			/* error code, vector */
-      break;
-    default:			/* Error w/no params */
-      len = 0;
-      break;
-    case 0x0:			/* Normal result */
-      switch (packet[0])
-	{
-	case OCD_AYT:		/* Are You There? */
-	case OCD_SET_BAUD_RATE:	/* Set Baud Rate */
-	case OCD_INIT:		/* Initialize OCD device */
-	case OCD_SET_SPEED:	/* Set Speed */
-	case OCD_SET_FUNC_CODE:	/* Set Function Code */
-	case OCD_SET_CTL_FLAGS:	/* Set Control Flags */
-	case OCD_SET_BUF_ADDR:	/* Set Register Buffer Address */
-	case OCD_RUN:		/* Run Target from PC  */
-	case OCD_RUN_ADDR:	/* Run Target from Specified Address  */
-	case OCD_STOP:		/* Stop Target */
-	case OCD_RESET_RUN:	/* Reset Target and Run */
-	case OCD_RESET:	/* Reset Target and Halt */
-	case OCD_STEP:		/* Single Step */
-	case OCD_WRITE_REGS:	/* Write Register */
-	case OCD_WRITE_MEM:	/* Write Memory */
-	case OCD_FILL_MEM:	/* Fill Memory */
-	case OCD_MOVE_MEM:	/* Move Memory */
-	case OCD_WRITE_INT_MEM:	/* Write Internal Memory */
-	case OCD_JUMP:		/* Jump to Subroutine */
-	case OCD_ERASE_FLASH:	/* Erase flash memory */
-	case OCD_PROGRAM_FLASH:	/* Write flash memory */
-	case OCD_EXIT_MON:	/* Exit the flash programming monitor  */
-	case OCD_ENTER_MON:	/* Enter the flash programming monitor  */
-	case OCD_LOG_FILE:	/* Make Wigglers.dll save Wigglers.log */
-	case OCD_SET_CONNECTION:	/* Set type of connection in Wigglers.dll */
-	  len = 0;
-	  break;
-	case OCD_GET_VERSION:	/* Get Version */
-	  len = 10;
-	  break;
-	case OCD_GET_STATUS_MASK:	/* Get Status Mask */
-	  len = 1;
-	  break;
-	case OCD_GET_CTRS:	/* Get Error Counters */
-	case OCD_READ_REGS:	/* Read Register */
-	case OCD_READ_MEM:	/* Read Memory */
-	case OCD_READ_INT_MEM:	/* Read Internal Memory */
-	  len = 257;
-	  break;
-	default:
-	  error (_("ocd_get_packet: unknown packet type 0x%x."), ch);
-	}
-    }
-
-  if (len == 257)		/* Byte stream? */
-    {				/* Yes, byte streams contain the length */
-      ch = readchar (timeout);
-
-      if (ch < 0)
-	error (_("ocd_get_packet (readchar): %d"), ch);
-      *packet_ptr++ = ch;
-      checksum += ch;
-      len = ch;
-      if (len == 0)
-	len = 256;
-    }
-
-  while (len-- >= 0)		/* Do rest of packet and checksum */
-    {
-      ch = readchar (timeout);
-
-      if (ch < 0)
-	error (_("ocd_get_packet (readchar): %d"), ch);
-      *packet_ptr++ = ch;
-      checksum += ch;
-    }
-
-  if (checksum != 0)
-    error (_("ocd_get_packet: bad packet checksum"));
-
-  if (cmd != -1 && cmd != packet[0])
-    error (_("Response phase error.  Got 0x%x, expected 0x%x"), packet[0], cmd);
-
-  *lenp = packet_ptr - packet - 1;	/* Subtract checksum byte */
-  return packet;
-}
-
-/* Execute a simple (one-byte) command.  Returns a pointer to the data
-   following the error code.  */
-
-static unsigned char *
-ocd_do_command (int cmd, int *statusp, int *lenp)
-{
-  unsigned char buf[100], *p;
-  int status, error_code;
-  char errbuf[100];
-
-  unsigned char logbuf[100];
-  int logpktlen;
-
-  buf[0] = cmd;
-  ocd_put_packet (buf, 1);	/* Send command */
-  p = ocd_get_packet (*buf, lenp, remote_timeout);
-
-  if (*lenp < 3)
-    error (_("Truncated response packet from OCD device"));
-
-  status = p[1];
-  error_code = p[2];
-
-  if (error_code != 0)
-    {
-      sprintf (errbuf, "ocd_do_command (0x%x):", cmd);
-      ocd_error (errbuf, error_code);
-    }
-
-  if (status & OCD_FLAG_PWF)
-    error (_("OCD device can't detect VCC at BDM interface."));
-  else if (status & OCD_FLAG_CABLE_DISC)
-    error (_("BDM cable appears to be disconnected."));
-
-  *statusp = status;
-
-  logbuf[0] = OCD_LOG_FILE;
-  logbuf[1] = 3;		/* close existing WIGGLERS.LOG */
-  ocd_put_packet (logbuf, 2);
-  ocd_get_packet (logbuf[0], &logpktlen, remote_timeout);
-
-  logbuf[0] = OCD_LOG_FILE;
-  logbuf[1] = 2;		/* append to existing WIGGLERS.LOG */
-  ocd_put_packet (logbuf, 2);
-  ocd_get_packet (logbuf[0], &logpktlen, remote_timeout);
-
-  return p + 3;
-}
-
-void
-ocd_kill (void)
-{
-  /* For some mysterious reason, wait_for_inferior calls kill instead of
-     mourn after it gets TARGET_WAITKIND_SIGNALLED.  Work around it.  */
-  if (kill_kludge)
-    {
-      kill_kludge = 0;
-      target_mourn_inferior ();
-      return;
-    }
-
-  /* Don't wait for it to die.  I'm not really sure it matters whether
-     we do or not.  */
-  target_mourn_inferior ();
-}
-
-void
-ocd_mourn (void)
-{
-  unpush_target (current_ops);
-  generic_mourn_inferior ();
-}
-
-/* All we actually do is set the PC to the start address of exec_bfd.  */
-
-void
-ocd_create_inferior (char *exec_file, char *args, char **env, int from_tty)
-{
-  if (args && (*args != '\000'))
-    error (_("Args are not supported by BDM."));
-
-  clear_proceed_status ();
-  write_pc (bfd_get_start_address (exec_bfd));
-}
-
-void
-ocd_load (char *args, int from_tty)
-{
-  generic_load (args, from_tty);
-
-  inferior_ptid = null_ptid;
-
-/* This is necessary because many things were based on the PC at the time that
-   we attached to the monitor, which is no longer valid now that we have loaded
-   new code (and just changed the PC).  Another way to do this might be to call
-   normal_stop, except that the stack may not be valid, and things would get
-   horribly confused... */
-
-  clear_symtab_users ();
-}
-
-/* This should be defined for each target */
-/* But we want to be able to compile this file for some configurations
-   not yet supported fully */
-
-#define BDM_BREAKPOINT {0x0,0x0,0x0,0x0}	/* For ppc 8xx */
-
-/* BDM (at least on CPU32) uses a different breakpoint */
-
-int
-ocd_insert_breakpoint (struct bp_target_info *bp_tgt)
-{
-  static char break_insn[] = BDM_BREAKPOINT;
-  int val;
-
-  bp_tgt->placed_size = bp_tgt->shadow_len = sizeof (break_insn);
-  val = target_read_memory (bp_tgt->placed_address, bp_tgt->shadow_contents,
-			    bp_tgt->placed_size);
-
-  if (val == 0)
-    val = target_write_memory (bp_tgt->placed_address, break_insn,
-			       bp_tgt->placed_size);
-
-  return val;
-}
-
-int
-ocd_remove_breakpoint (struct bp_target_info *bp_tgt)
-{
-  return target_write_memory (bp_tgt->placed_address, bp_tgt->shadow_contents,
-			      bp_tgt->placed_size);
-}
-
-static void
-bdm_command (char *args, int from_tty)
-{
-  error (_("bdm command must be followed by `reset'"));
-}
-
-static void
-bdm_reset_command (char *args, int from_tty)
-{
-  int status, pktlen;
-
-  if (!ocd_desc)
-    error (_("Not connected to OCD device."));
-
-  ocd_do_command (OCD_RESET, &status, &pktlen);
-  dcache_invalidate (target_dcache);
-  registers_changed ();
-}
-
-static void
-bdm_restart_command (char *args, int from_tty)
-{
-  int status, pktlen;
-
-  if (!ocd_desc)
-    error (_("Not connected to OCD device."));
-
-  ocd_do_command (OCD_RESET_RUN, &status, &pktlen);
-  last_run_status = status;
-  clear_proceed_status ();
-  wait_for_inferior ();
-  normal_stop ();
-}
-
-/* Temporary replacement for target_store_registers().  This prevents
-   generic_load from trying to set the PC.  */
-
-static void
-noop_store_registers (int regno)
-{
-}
-
-static void
-bdm_update_flash_command (char *args, int from_tty)
-{
-  int status, pktlen;
-  struct cleanup *old_chain; 
-  void (*store_registers_tmp) (int);
-
-  if (!ocd_desc)
-    error (_("Not connected to OCD device."));
-
-  if (!args)
-    error (_("Must specify file containing new OCD code."));
-
-/*  old_chain = make_cleanup (flash_cleanup, 0); */
-
-  ocd_do_command (OCD_ENTER_MON, &status, &pktlen);
-
-  ocd_do_command (OCD_ERASE_FLASH, &status, &pktlen);
-
-  write_mem_command = OCD_PROGRAM_FLASH;
-  store_registers_tmp = current_target.to_store_registers;
-  current_target.to_store_registers = noop_store_registers;
-
-  generic_load (args, from_tty);
-
-  current_target.to_store_registers = store_registers_tmp;
-  write_mem_command = OCD_WRITE_MEM;
-
-  ocd_do_command (OCD_EXIT_MON, &status, &pktlen);
-
-/*  discard_cleanups (old_chain); */
-}
-
-extern initialize_file_ftype _initialize_remote_ocd; /* -Wmissing-prototypes */
-
-void
-_initialize_remote_ocd (void)
-{
-  extern struct cmd_list_element *cmdlist;
-  static struct cmd_list_element *ocd_cmd_list = NULL;
-
-  add_setshow_integer_cmd ("remotetimeout", no_class, &remote_timeout, _("\
-Set timeout value for remote read."), _("\
-Show timeout value for remote read."), NULL,
-			   NULL,
-			   NULL, /* FIXME: i18n: */
-			   &setlist, &showlist);
-
-  /* FIXME: i18n: What documentation?  */
-  add_prefix_cmd ("ocd", class_obscure, bdm_command, (""), &ocd_cmd_list,
-		  "ocd ", 0, &cmdlist);
-
-  /* FIXME: i18n: what documentation? */
-  add_cmd ("reset", class_obscure, bdm_reset_command, (""), &ocd_cmd_list);
-  add_cmd ("restart", class_obscure, bdm_restart_command, (""), &ocd_cmd_list);
-  add_cmd ("update-flash", class_obscure, bdm_update_flash_command, (""), &ocd_cmd_list);
-}
diff --git a/gdb/ocd.h b/gdb/ocd.h
deleted file mode 100644
index cc6f30dc9b6..00000000000
--- a/gdb/ocd.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Definitions for the Macraigor Systems BDM Wiggler
-   Copyright (C) 1996, 1997, 1998, 2000, 2001, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#ifndef OCD_H
-#define OCD_H
-
-struct mem_attrib;
-struct target_ops;
-
-/* Wiggler serial protocol definitions */
-
-#define DLE 020			/* Quote char */
-#define SYN 026			/* Start of packet */
-#define RAW_SYN ((026 << 8) | 026)	/* get_quoted_char found a naked SYN */
-
-/* Status flags */
-
-#define OCD_FLAG_RESET 0x01	/* Target is being reset */
-#define OCD_FLAG_STOPPED 0x02	/* Target is halted */
-#define OCD_FLAG_BDM 0x04	/* Target is in BDM */
-#define OCD_FLAG_PWF 0x08	/* Power failed */
-#define OCD_FLAG_CABLE_DISC 0x10	/* BDM cable disconnected */
-
-/* Commands */
-
-#define OCD_AYT 0x0		/* Are you there? */
-#define OCD_GET_VERSION 0x1	/* Get Version */
-#define OCD_SET_BAUD_RATE 0x2	/* Set Baud Rate */
-#define OCD_INIT 0x10		/* Initialize Wiggler */
-#define OCD_SET_SPEED 0x11	/* Set Speed */
-#define OCD_GET_STATUS_MASK 0x12	/* Get Status Mask */
-#define OCD_GET_CTRS 0x13	/* Get Error Counters */
-#define OCD_SET_FUNC_CODE 0x14	/* Set Function Code */
-#define OCD_SET_CTL_FLAGS 0x15	/* Set Control Flags */
-#define OCD_SET_BUF_ADDR 0x16	/* Set Register Buffer Address */
-#define OCD_RUN 0x20		/* Run Target from PC */
-#define OCD_RUN_ADDR 0x21	/* Run Target from Specified Address */
-#define OCD_STOP 0x22		/* Stop Target */
-#define OCD_RESET_RUN 0x23	/* Reset Target and Run */
-#define OCD_RESET 0x24		/* Reset Target and Halt */
-#define OCD_STEP 0x25		/* Single step */
-#define OCD_READ_REGS 0x30	/* Read Registers */
-#define OCD_WRITE_REGS 0x31	/* Write Registers */
-#define OCD_READ_MEM 0x32	/* Read Memory */
-#define OCD_WRITE_MEM 0x33	/* Write Memory */
-#define OCD_FILL_MEM 0x34	/* Fill Memory */
-#define OCD_MOVE_MEM 0x35	/* Move Memory */
-
-#define OCD_READ_INT_MEM 0x80	/* Read Internal Memory */
-#define OCD_WRITE_INT_MEM 0x81	/* Write Internal Memory */
-#define OCD_JUMP 0x82		/* Jump to Subroutine */
-
-#define OCD_ERASE_FLASH 0x90	/* Erase flash memory */
-#define OCD_PROGRAM_FLASH 0x91	/* Write flash memory */
-#define OCD_EXIT_MON 0x93	/* Exit the flash programming monitor  */
-#define OCD_ENTER_MON 0x94	/* Enter the flash programming monitor  */
-
-#define OCD_SET_STATUS 0x0a	/* Set status */
-#define OCD_SET_CONNECTION 0xf0	/* Set connection (init Wigglers.dll) */
-#define OCD_LOG_FILE 0xf1	/* Cmd to get Wigglers.dll to log cmds */
-#define OCD_FLAG_STOP 0x0	/* Stop the target, enter BDM */
-#define OCD_FLAG_START 0x01	/* Start the target at PC */
-#define OCD_FLAG_RETURN_STATUS 0x04	/* Return async status */
-
-/* Target type (for OCD_INIT command) */
-
-enum ocd_target_type
-  {
-    OCD_TARGET_CPU32 = 0x0,	/* Moto cpu32 family */
-    OCD_TARGET_CPU16 = 0x1,
-    OCD_TARGET_MOTO_PPC = 0x2,	/* Motorola PPC 5xx/8xx */
-    OCD_TARGET_IBM_PPC = 0x3
-  };				/* IBM PPC 4xx */
-
-void ocd_open (char *name, int from_tty, enum ocd_target_type,
-	       struct target_ops *ops);
-
-void ocd_close (int quitting);
-
-void ocd_detach (char *args, int from_tty);
-
-void ocd_resume (ptid_t ptid, int step, enum target_signal siggnal);
-
-void ocd_prepare_to_store (void);
-
-void ocd_stop (void);
-
-void ocd_files_info (struct target_ops *ignore);
-
-
-int ocd_xfer_memory (CORE_ADDR memaddr, char *myaddr,
-		     int len, int should_write,
-		     struct mem_attrib *attrib,
-		     struct target_ops *target);
-
-void ocd_mourn (void);
-
-void ocd_create_inferior (char *exec_file, char *args, char **env,
-			  int from_tty);
-
-int ocd_thread_alive (ptid_t th);
-
-void ocd_error (char *s, int error_code);
-
-void ocd_kill (void);
-
-void ocd_load (char *args, int from_tty);
-
-unsigned char *ocd_read_bdm_registers (int first_bdm_regno,
-				       int last_bdm_regno, int *reglen);
-
-CORE_ADDR ocd_read_bdm_register (int bdm_regno);
-
-void ocd_write_bdm_registers (int first_bdm_regno,
-			      unsigned char *regptr, int reglen);
-
-void ocd_write_bdm_register (int bdm_regno, CORE_ADDR reg);
-
-int ocd_wait (void);
-
-int ocd_insert_breakpoint (struct bp_target_info *bp_tgt);
-int ocd_remove_breakpoint (struct bp_target_info *bp_tgt);
-
-int ocd_write_bytes (CORE_ADDR memaddr, char *myaddr, int len);
-
-#endif /* OCD_H */
diff --git a/gdb/ppc-bdm.c b/gdb/ppc-bdm.c
deleted file mode 100644
index fff13d8c519..00000000000
--- a/gdb/ppc-bdm.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/* Remote target communications for the Macraigor Systems BDM Wiggler
-   talking to a Motorola PPC 8xx ADS board
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "gdb_string.h"
-#include <fcntl.h>
-#include "frame.h"
-#include "inferior.h"
-#include "bfd.h"
-#include "symfile.h"
-#include "target.h"
-#include "gdbcmd.h"
-#include "objfiles.h"
-#include "gdb-stabs.h"
-#include <sys/types.h>
-#include "serial.h"
-#include "ocd.h"
-#include "ppc-tdep.h"
-#include "regcache.h"
-#include "gdb_assert.h"
-
-static void bdm_ppc_open (char *name, int from_tty);
-
-static ptid_t bdm_ppc_wait (ptid_t ptid,
-                            struct target_waitstatus *target_status);
-
-static void bdm_ppc_fetch_registers (int regno);
-
-static void bdm_ppc_store_registers (int regno);
-
-extern struct target_ops bdm_ppc_ops;	/* Forward decl */
-
-/*#define BDM_NUM_REGS 71 */
-#define BDM_NUM_REGS 24
-
-#define BDM_REGMAP \
-	2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, /* r0-r7 */ \
-	2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, /* r8-r15 */ \
-	2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, /* r16-r23 */ \
-	2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, /* r24-r31 */ \
-\
-	2080, 2082, 2084, 2086, 2088, 2090, 2092, 2094, /* fp0->fp8 */ \
-	2096, 2098, 2100, 2102, 2104, 2106, 2108, 2110, /* fp0->fp8 */ \
-	2112, 2114, 2116, 2118, 2120, 2122, 2124, 2126, /* fp0->fp8 */ \
-	2128, 2130, 2132, 2134, 2136, 2138, 2140, 2142, /* fp0->fp8 */ \
-\
-	26,        /* pc (SRR0 (SPR 26)) */ \
-	2146,      /* ps (MSR) */ \
-	2144,      /* cnd (CR) */ \
-	8,         /* lr (SPR 8) */ \
-	9,         /* cnt (CTR (SPR 9)) */ \
-	1,         /* xer (SPR 1) */ \
-	0,			/* mq (SPR 0) */
-
-
-char nowatchdog[4] =
-{0xff, 0xff, 0xff, 0x88};
-
-/* Open a connection to a remote debugger.
-   NAME is the filename used for communication.  */
-
-static void
-bdm_ppc_open (char *name, int from_tty)
-{
-  CORE_ADDR watchdogaddr = 0xff000004;
-
-  ocd_open (name, from_tty, OCD_TARGET_MOTO_PPC, &bdm_ppc_ops);
-
-  /* We want interrupts to drop us into debugging mode. */
-  /* Modify the DER register to accomplish this. */
-  ocd_write_bdm_register (149, 0x20024000);
-
-  /* Disable watchdog timer on the board */
-  ocd_write_bytes (watchdogaddr, nowatchdog, 4);
-}
-
-/* Wait until the remote machine stops, then return,
-   storing status in STATUS just as `wait' would.
-   Returns "pid" (though it's not clear what, if anything, that
-   means in the case of this target).  */
-
-static ptid_t
-bdm_ppc_wait (ptid_t ptid, struct target_waitstatus *target_status)
-{
-  int stop_reason;
-
-  target_status->kind = TARGET_WAITKIND_STOPPED;
-
-  stop_reason = ocd_wait ();
-
-  if (stop_reason)
-    {
-      target_status->value.sig = TARGET_SIGNAL_INT;
-      return inferior_ptid;
-    }
-
-  target_status->value.sig = TARGET_SIGNAL_TRAP;	/* XXX for now */
-
-#if 0
-  {
-    unsigned long ecr, der;
-
-    ecr = ocd_read_bdm_register (148);	/* Read the exception cause register */
-    der = ocd_read_bdm_register (149);	/* Read the debug enables register */
-    fprintf_unfiltered (gdb_stdout, "ecr = 0x%x, der = 0x%x\n", ecr, der);
-  }
-#endif
-
-  return inferior_ptid;
-}
-
-static int bdm_regmap[] =
-{BDM_REGMAP};
-
-/* Read the remote registers into regs.
-   Fetch register REGNO, or all registers if REGNO == -1
-
-   The Wiggler uses the following codes to access the registers:
-
-   0 -> 1023            SPR 0 -> 1023
-   0 - SPR 0 - MQ
-   1 - SPR 1 - XER
-   8 - SPR 8 - LR
-   9 - SPR 9 - CTR (known as cnt in GDB)
-   26 - SPR 26 - SRR0 - pc
-   1024 -> 2047         DCR 0 -> DCR 1023 (IBM PPC 4xx only)
-   2048 -> 2079         R0 -> R31
-   2080 -> 2143         FP0 -> FP31 (64 bit regs) (IBM PPC 5xx only)
-   2144                 CR (known as cnd in GDB)
-   2145                 FPCSR
-   2146                 MSR (known as ps in GDB)
- */
-
-static void
-bdm_ppc_fetch_registers (int regno)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-  int i;
-  unsigned char *regs;
-  int first_regno, last_regno;
-  int first_bdm_regno, last_bdm_regno;
-  int reglen;
-
-  if (regno == -1)
-    {
-      first_regno = 0;
-      last_regno = NUM_REGS - 1;
-
-      first_bdm_regno = 0;
-      last_bdm_regno = BDM_NUM_REGS - 1;
-    }
-  else
-    {
-      first_regno = regno;
-      last_regno = regno;
-
-      first_bdm_regno = bdm_regmap[regno];
-      last_bdm_regno = bdm_regmap[regno];
-    }
-
-  if (first_bdm_regno == -1)
-    {
-      regcache_raw_supply (current_regcache, first_regno, NULL);
-      return;			/* Unsupported register */
-    }
-
-  /* FIXME: jimb/2004-05-04: I'm not sure how to adapt this code to
-     processors that lack floating point registers, and I don't have
-     have the equipment to test it.  So we'll leave that case for the
-     next person who encounters it.  */
-  gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
-
-#if 1
-  /* Can't ask for floating point regs on ppc 8xx, also need to
-     avoid asking for the mq register. */
-  if (first_regno == last_regno)	/* only want one reg */
-    {
-/*      printf("Asking for register %d\n", first_regno); */
-
-      /* if asking for an invalid register */
-      if ((first_regno == gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
-          || (first_regno == gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum)
-	  || ((first_regno >= tdep->ppc_fp0_regnum)
-              && (first_regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
-	{
-/*          printf("invalid reg request!\n"); */
-	  regcache_raw_supply (current_regcache, first_regno, NULL);
-	  return;		/* Unsupported register */
-	}
-      else
-	{
-	  regs = ocd_read_bdm_registers (first_bdm_regno,
-					 last_bdm_regno, &reglen);
-	}
-    }
-  else
-    internal_error (__FILE__, __LINE__,
-                    _("ppc_bdm_fetch_registers: "
-                    "'all registers' case not implemented"));
-
-#endif
-#if 0
-  regs = ocd_read_bdm_registers (first_bdm_regno, last_bdm_regno, &reglen);
-#endif
-
-  for (i = first_regno; i <= last_regno; i++)
-    {
-      int bdm_regno, regoffset;
-
-      bdm_regno = bdm_regmap[i];
-      if (bdm_regno != -1)
-	{
-	  regoffset = bdm_regno - first_bdm_regno;
-
-	  if (regoffset >= reglen / 4)
-	    continue;
-
-	  regcache_raw_supply (current_regcache, i, regs + 4 * regoffset);
-	}
-      else
-	regcache_raw_supply (current_regcache, i, NULL);	/* Unsupported register */
-    }
-}
-
-/* Store register REGNO, or all registers if REGNO == -1, from the contents
-   of REGISTERS.  FIXME: ignores errors.  */
-
-static void
-bdm_ppc_store_registers (int regno)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-  int i;
-  int first_regno, last_regno;
-  int first_bdm_regno, last_bdm_regno;
-
-  if (regno == -1)
-    {
-      first_regno = 0;
-      last_regno = NUM_REGS - 1;
-
-      first_bdm_regno = 0;
-      last_bdm_regno = BDM_NUM_REGS - 1;
-    }
-  else
-    {
-      first_regno = regno;
-      last_regno = regno;
-
-      first_bdm_regno = bdm_regmap[regno];
-      last_bdm_regno = bdm_regmap[regno];
-    }
-
-  if (first_bdm_regno == -1)
-    return;			/* Unsupported register */
-
-  /* FIXME: jimb/2004-05-04: I'm not sure how to adapt this code to
-     processors that lack floating point registers, and I don't have
-     have the equipment to test it.  So we'll leave that case for the
-     next person who encounters it.  */
-  gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
-
-  for (i = first_regno; i <= last_regno; i++)
-    {
-      int bdm_regno;
-
-      bdm_regno = bdm_regmap[i];
-
-      /* only attempt to write if it's a valid ppc 8xx register */
-      /* (need to avoid FP regs and MQ reg) */
-      if ((i != gdbarch_tdep (current_gdbarch)->ppc_mq_regnum) 
-          && (i != gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum) 
-          && ((i < tdep->ppc_fp0_regnum)
-              || (i >= tdep->ppc_fp0_regnum + ppc_num_fprs)))
-	{
-/*          printf("write valid reg %d\n", bdm_regno); */
-	  ocd_write_bdm_registers (bdm_regno, deprecated_registers + DEPRECATED_REGISTER_BYTE (i), 4);
-	}
-/*
-   else if (i == gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
-   printf("don't write invalid reg %d (PPC_MQ_REGNUM)\n", bdm_regno);
-   else
-   printf("don't write invalid reg %d\n", bdm_regno);
- */
-    }
-}
-
-/* Define the target subroutine names */
-
-struct target_ops bdm_ppc_ops;
-
-static void
-init_bdm_ppc_ops (void)
-{
-  bdm_ppc_ops.to_shortname = "ocd";
-  bdm_ppc_ops.to_longname = "Remote target with On-Chip Debugging";
-  bdm_ppc_ops.to_doc = "Use a remote target with On-Chip Debugging.  To use a target box;\n\
-specify the serial device it is connected to (e.g. /dev/ttya).  To use\n\
-a wiggler, specify wiggler and then the port it is connected to\n\
-(e.g. wiggler lpt1).";		/* to_doc */
-  bdm_ppc_ops.to_open = bdm_ppc_open;
-  bdm_ppc_ops.to_close = ocd_close;
-  bdm_ppc_ops.to_detach = ocd_detach;
-  bdm_ppc_ops.to_resume = ocd_resume;
-  bdm_ppc_ops.to_wait = bdm_ppc_wait;
-  bdm_ppc_ops.to_fetch_registers = bdm_ppc_fetch_registers;
-  bdm_ppc_ops.to_store_registers = bdm_ppc_store_registers;
-  bdm_ppc_ops.to_prepare_to_store = ocd_prepare_to_store;
-  bdm_ppc_ops.deprecated_xfer_memory = ocd_xfer_memory;
-  bdm_ppc_ops.to_files_info = ocd_files_info;
-  bdm_ppc_ops.to_insert_breakpoint = ocd_insert_breakpoint;
-  bdm_ppc_ops.to_remove_breakpoint = ocd_remove_breakpoint;
-  bdm_ppc_ops.to_kill = ocd_kill;
-  bdm_ppc_ops.to_load = ocd_load;
-  bdm_ppc_ops.to_create_inferior = ocd_create_inferior;
-  bdm_ppc_ops.to_mourn_inferior = ocd_mourn;
-  bdm_ppc_ops.to_thread_alive = ocd_thread_alive;
-  bdm_ppc_ops.to_stop = ocd_stop;
-  bdm_ppc_ops.to_stratum = process_stratum;
-  bdm_ppc_ops.to_has_all_memory = 1;
-  bdm_ppc_ops.to_has_memory = 1;
-  bdm_ppc_ops.to_has_stack = 1;
-  bdm_ppc_ops.to_has_registers = 1;
-  bdm_ppc_ops.to_has_execution = 1;
-  bdm_ppc_ops.to_magic = OPS_MAGIC;
-}				/* init_bdm_ppc_ops */
-
-extern initialize_file_ftype _initialize_bdm_ppc; /* -Wmissing-prototypes */
-
-void
-_initialize_bdm_ppc (void)
-{
-  init_bdm_ppc_ops ();
-  add_target (&bdm_ppc_ops);
-}
diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c
deleted file mode 100644
index fea809df026..00000000000
--- a/gdb/remote-e7000.c
+++ /dev/null
@@ -1,2221 +0,0 @@
-/* Remote debugging interface for Renesas E7000 ICE, for GDB
-
-   Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2006, 2007 Free Software Foundation, Inc.
-
-   Contributed by Cygnus Support. 
-
-   Written by Steve Chamberlain for Cygnus Support.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* The E7000 is an in-circuit emulator for the Renesas H8/300-H and
-   Renesas-SH processor.  It has serial port and a lan port.  
-
-   The monitor command set makes it difficult to load large ammounts of
-   data over the lan without using ftp - so try not to issue load
-   commands when communicating over ethernet; use the ftpload command.
-
-   The monitor pauses for a second when dumping srecords to the serial
-   line too, so we use a slower per byte mechanism but without the
-   startup overhead.  Even so, it's pretty slow... */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "gdbarch.h"
-#include "inferior.h"
-#include "target.h"
-#include "value.h"
-#include "command.h"
-#include "gdb_string.h"
-#include "exceptions.h"
-#include "gdbcmd.h"
-#include <sys/types.h>
-#include "serial.h"
-#include "remote-utils.h"
-#include "symfile.h"
-#include "regcache.h"
-#include <time.h>
-#include <ctype.h>
-
-
-#if 1
-#define HARD_BREAKPOINTS	/* Now handled by set option. */
-#define BC_BREAKPOINTS use_hard_breakpoints
-#endif
-
-#define CTRLC 0x03
-#define ENQ  0x05
-#define ACK  0x06
-#define CTRLZ 0x1a
-
-/* This file is used by 2 different targets, sh-elf and h8300. The
-   h8300 is not multiarched and doesn't use the registers defined in
-   tm-sh.h. To avoid using a macro GDB_TARGET_IS_SH, we do runtime check
-   of the target, which requires that these namse below are always
-   defined also in the h8300 case. */
-
-#if !defined (PR_REGNUM)
-#define PR_REGNUM 	-1
-#endif
-#if !defined (GBR_REGNUM)
-#define GBR_REGNUM 	-1
-#endif
-#if !defined (VBR_REGNUM)
-#define VBR_REGNUM 	-1
-#endif
-#if !defined (MACH_REGNUM)
-#define MACH_REGNUM 	-1
-#endif
-#if !defined (MACL_REGNUM)
-#define MACL_REGNUM 	-1
-#endif
-#if !defined (SR_REGNUM)
-#define SR_REGNUM 	-1
-#endif
-
-extern void report_transfer_performance (unsigned long, time_t, time_t);
-
-extern char *sh_processor_type;
-
-/* Local function declarations.  */
-
-static void e7000_close (int);
-
-static void e7000_fetch_register (int);
-
-static void e7000_store_register (int);
-
-static void e7000_command (char *, int);
-
-static void e7000_login_command (char *, int);
-
-static void e7000_ftp_command (char *, int);
-
-static void e7000_drain_command (char *, int);
-
-static void expect (char *);
-
-static void expect_full_prompt (void);
-
-static void expect_prompt (void);
-
-static int e7000_parse_device (char *args, char *dev_name, int baudrate);
-/* Variables. */
-
-static struct serial *e7000_desc;
-
-/* Allow user to chose between using hardware breakpoints or memory. */
-static int use_hard_breakpoints = 0;	/* use sw breakpoints by default */
-
-/* Nonzero if using the tcp serial driver.  */
-
-static int using_tcp;		/* direct tcp connection to target */
-static int using_tcp_remote;	/* indirect connection to target 
-				   via tcp to controller */
-
-/* Nonzero if using the pc isa card.  */
-
-static int using_pc;
-
-extern struct target_ops e7000_ops;	/* Forward declaration */
-
-char *ENQSTRING = "\005";
-
-/* Nonzero if some routine (as opposed to the user) wants echoing.
-   FIXME: Do this reentrantly with an extra parameter.  */
-
-static int echo;
-
-static int ctrl_c;
-
-static int timeout = 20;
-
-/* Send data to e7000debug.  */
-
-static void
-puts_e7000debug (char *buf)
-{
-  if (!e7000_desc)
-    error (_("Use \"target e7000 ...\" first."));
-
-  if (remote_debug)
-    printf_unfiltered ("Sending %s\n", buf);
-
-  if (serial_write (e7000_desc, buf, strlen (buf)))
-    fprintf_unfiltered (gdb_stderr, "serial_write failed: %s\n", safe_strerror (errno));
-
-  /* And expect to see it echoed, unless using the pc interface */
-#if 0
-  if (!using_pc)
-#endif
-    expect (buf);
-}
-
-static void
-putchar_e7000 (int x)
-{
-  char b[1];
-
-  b[0] = x;
-  serial_write (e7000_desc, b, 1);
-}
-
-static void
-write_e7000 (char *s)
-{
-  serial_write (e7000_desc, s, strlen (s));
-}
-
-static int
-normal (int x)
-{
-  if (x == '\n')
-    return '\r';
-  return x;
-}
-
-/* Read a character from the remote system, doing all the fancy timeout
-   stuff.  Handles serial errors and EOF.  If TIMEOUT == 0, and no chars,
-   returns -1, else returns next char.  Discards chars > 127.  */
-
-static int
-readchar (int timeout)
-{
-  int c;
-
-  do
-    {
-      c = serial_readchar (e7000_desc, timeout);
-    }
-  while (c > 127);
-
-  if (c == SERIAL_TIMEOUT)
-    {
-      if (timeout == 0)
-	return -1;
-      echo = 0;
-      error (_("Timeout reading from remote system."));
-    }
-  else if (c < 0)
-    error (_("Serial communication error"));
-
-  if (remote_debug)
-    {
-      putchar_unfiltered (c);
-      gdb_flush (gdb_stdout);
-    }
-
-  return normal (c);
-}
-
-#if 0
-char *
-tl (int x)
-{
-  static char b[8][10];
-  static int p;
-
-  p++;
-  p &= 7;
-  if (x >= ' ')
-    {
-      b[p][0] = x;
-      b[p][1] = 0;
-    }
-  else
-    {
-      sprintf (b[p], "<%d>", x);
-    }
-
-  return b[p];
-}
-#endif
-
-/* Scan input from the remote system, until STRING is found.  If
-   DISCARD is non-zero, then discard non-matching input, else print it
-   out.  Let the user break out immediately.  */
-
-static void
-expect (char *string)
-{
-  char *p = string;
-  int c;
-  int nl = 0;
-
-  while (1)
-    {
-      c = readchar (timeout);
-
-      if (echo)
-	{
-	  if (c == '\r' || c == '\n')
-	    {
-	      if (!nl)
-		putchar_unfiltered ('\n');
-	      nl = 1;
-	    }
-	  else
-	    {
-	      nl = 0;
-	      putchar_unfiltered (c);
-	    }
-	  gdb_flush (gdb_stdout);
-	}
-      if (normal (c) == normal (*p++))
-	{
-	  if (*p == '\0')
-	    return;
-	}
-      else
-	{
-	  p = string;
-
-	  if (normal (c) == normal (string[0]))
-	    p++;
-	}
-    }
-}
-
-/* Keep discarding input until we see the e7000 prompt.
-
-   The convention for dealing with the prompt is that you
-   o give your command
-   o *then* wait for the prompt.
-
-   Thus the last thing that a procedure does with the serial line will
-   be an expect_prompt().  Exception: e7000_resume does not wait for
-   the prompt, because the terminal is being handed over to the
-   inferior.  However, the next thing which happens after that is a
-   e7000_wait which does wait for the prompt.  Note that this includes
-   abnormal exit, e.g. error().  This is necessary to prevent getting
-   into states from which we can't recover.  */
-
-static void
-expect_prompt (void)
-{
-  expect (":");
-}
-
-static void
-expect_full_prompt (void)
-{
-  expect ("\r:");
-}
-
-static int
-convert_hex_digit (int ch)
-{
-  if (ch >= '0' && ch <= '9')
-    return ch - '0';
-  else if (ch >= 'A' && ch <= 'F')
-    return ch - 'A' + 10;
-  else if (ch >= 'a' && ch <= 'f')
-    return ch - 'a' + 10;
-  return -1;
-}
-
-static int
-get_hex (int *start)
-{
-  int value = convert_hex_digit (*start);
-  int try;
-
-  *start = readchar (timeout);
-  while ((try = convert_hex_digit (*start)) >= 0)
-    {
-      value <<= 4;
-      value += try;
-      *start = readchar (timeout);
-    }
-  return value;
-}
-
-#if 0
-/* Get N 32-bit words from remote, each preceded by a space, and put
-   them in registers starting at REGNO.  */
-
-static void
-get_hex_regs (int n, int regno)
-{
-  long val;
-  int i;
-
-  for (i = 0; i < n; i++)
-    {
-      int j;
-
-      val = 0;
-      for (j = 0; j < 8; j++)
-	val = (val << 4) + get_hex_digit (j == 0);
-      regcache_raw_supply (current_regcache, regno++, (char *) &val);
-    }
-}
-#endif
-
-/* This is called not only when we first attach, but also when the
-   user types "run" after having attached.  */
-
-static void
-e7000_create_inferior (char *execfile, char *args, char **env,
-		       int from_tty)
-{
-  int entry_pt;
-
-  if (args && *args)
-    error (_("Can't pass arguments to remote E7000DEBUG process"));
-
-  if (execfile == 0 || exec_bfd == 0)
-    error (_("No executable file specified"));
-
-  entry_pt = (int) bfd_get_start_address (exec_bfd);
-
-#ifdef CREATE_INFERIOR_HOOK
-  CREATE_INFERIOR_HOOK (0);	/* No process-ID */
-#endif
-
-  /* The "process" (board) is already stopped awaiting our commands, and
-     the program is already downloaded.  We just set its PC and go.  */
-
-  clear_proceed_status ();
-
-  /* Tell wait_for_inferior that we've started a new process.  */
-  init_wait_for_inferior ();
-
-  /* Set up the "saved terminal modes" of the inferior
-     based on what modes we are starting it with.  */
-  target_terminal_init ();
-
-  /* Install inferior's terminal modes.  */
-  target_terminal_inferior ();
-
-  /* insert_step_breakpoint ();  FIXME, do we need this?  */
-  write_pc ((CORE_ADDR) entry_pt);
-}
-
-/* Open a connection to a remote debugger.  NAME is the filename used
-   for communication.  */
-
-static int baudrate = 9600;
-static char dev_name[100];
-
-static char *machine = "";
-static char *user = "";
-static char *passwd = "";
-static char *dir = "";
-
-/* Grab the next token and buy some space for it */
-
-static char *
-next (char **ptr)
-{
-  char *p = *ptr;
-  char *s;
-  char *r;
-  int l = 0;
-
-  while (*p && *p == ' ')
-    p++;
-  s = p;
-  while (*p && (*p != ' ' && *p != '\t'))
-    {
-      l++;
-      p++;
-    }
-  r = xmalloc (l + 1);
-  memcpy (r, s, l);
-  r[l] = 0;
-  *ptr = p;
-  return r;
-}
-
-static void
-e7000_login_command (char *args, int from_tty)
-{
-  if (args)
-    {
-      machine = next (&args);
-      user = next (&args);
-      passwd = next (&args);
-      dir = next (&args);
-      if (from_tty)
-	{
-	  printf_unfiltered ("Set info to %s %s %s %s\n", machine, user, passwd, dir);
-	}
-    }
-  else
-    {
-      error (_("Syntax is ftplogin <machine> <user> <passwd> <directory>"));
-    }
-}
-
-/* Start an ftp transfer from the E7000 to a host */
-
-static void
-e7000_ftp_command (char *args, int from_tty)
-{
-  /* FIXME: arbitrary limit on machine names and such.  */
-  char buf[200];
-
-  int oldtimeout = timeout;
-  timeout = remote_timeout;
-
-  sprintf (buf, "ftp %s\r", machine);
-  puts_e7000debug (buf);
-  expect (" Username : ");
-  sprintf (buf, "%s\r", user);
-  puts_e7000debug (buf);
-  expect (" Password : ");
-  write_e7000 (passwd);
-  write_e7000 ("\r");
-  expect ("success\r");
-  expect ("FTP>");
-  sprintf (buf, "cd %s\r", dir);
-  puts_e7000debug (buf);
-  expect ("FTP>");
-  sprintf (buf, "ll 0;s:%s\r", args);
-  puts_e7000debug (buf);
-  expect ("FTP>");
-  puts_e7000debug ("bye\r");
-  expect (":");
-  timeout = oldtimeout;
-}
-
-static int
-e7000_parse_device (char *args, char *dev_name, int baudrate)
-{
-  char junk[128];
-  int n = 0;
-  if (args && strcasecmp (args, "pc") == 0)
-    {
-      strcpy (dev_name, args);
-      using_pc = 1;
-    }
-  else
-    {
-      /* FIXME! temp hack to allow use with port master -
-         target tcp_remote <device> */
-      if (args && strncmp (args, "tcp", 10) == 0)
-	{
-	  char com_type[128];
-	  n = sscanf (args, " %s %s %d %s", com_type, dev_name, &baudrate, junk);
-	  using_tcp_remote = 1;
-	  n--;
-	}
-      else if (args)
-	{
-	  n = sscanf (args, " %s %d %s", dev_name, &baudrate, junk);
-	}
-
-      if (n != 1 && n != 2)
-	{
-	  error (_("Bad arguments.  Usage:\ttarget e7000 <device> <speed>\n\
-or \t\ttarget e7000 <host>[:<port>]\n\
-or \t\ttarget e7000 tcp_remote <host>[:<port>]\n\
-or \t\ttarget e7000 pc\n"));
-	}
-
-#if !defined(__GO32__) && !defined(_WIN32) && !defined(__CYGWIN__)
-      /* FIXME!  test for ':' is ambiguous */
-      if (n == 1 && strchr (dev_name, ':') == 0)
-	{
-	  /* Default to normal telnet port */
-	  /* serial_open will use this to determine tcp communication */
-	  strcat (dev_name, ":23");
-	}
-#endif
-      if (!using_tcp_remote && strchr (dev_name, ':'))
-	using_tcp = 1;
-    }
-
-  return n;
-}
-
-/* Stub for catch_errors.  */
-
-static int
-e7000_start_remote (void *dummy)
-{
-  int loop;
-  int sync;
-  int try;
-  int quit_trying;
-
-  immediate_quit++;		/* Allow user to interrupt it */
-
-  /* Hello?  Are you there?  */
-  sync = 0;
-  loop = 0;
-  try = 0;
-  quit_trying = 20;
-  putchar_e7000 (CTRLC);
-  while (!sync && ++try <= quit_trying)
-    {
-      int c;
-
-      printf_unfiltered ("[waiting for e7000...]\n");
-
-      write_e7000 ("\r");
-      c = readchar (1);
-
-      /* FIXME!  this didn't seem right->  while (c != SERIAL_TIMEOUT)
-       * we get stuck in this loop ...
-       * We may never timeout, and never sync up :-(
-       */
-      while (!sync && c != -1)
-	{
-	  /* Dont echo cr's */
-	  if (c != '\r')
-	    {
-	      putchar_unfiltered (c);
-	      gdb_flush (gdb_stdout);
-	    }
-	  /* Shouldn't we either break here, or check for sync in inner loop? */
-	  if (c == ':')
-	    sync = 1;
-
-	  if (loop++ == 20)
-	    {
-	      putchar_e7000 (CTRLC);
-	      loop = 0;
-	    }
-
-	  QUIT;
-
-	  if (quit_flag)
-	    {
-	      putchar_e7000 (CTRLC);
-	      /* Was-> quit_flag = 0; */
-	      c = -1;
-	      quit_trying = try + 1;	/* we don't want to try anymore */
-	    }
-	  else
-	    {
-	      c = readchar (1);
-	    }
-	}
-    }
-
-  if (!sync)
-    {
-      fprintf_unfiltered (gdb_stderr, "Giving up after %d tries...\n", try);
-      error (_("Unable to synchronize with target."));
-    }
-
-  puts_e7000debug ("\r");
-  expect_prompt ();
-  puts_e7000debug ("b -\r");	/* Clear breakpoints */
-  expect_prompt ();
-
-  immediate_quit--;
-
-/* This is really the job of start_remote however, that makes an assumption
-   that the target is about to print out a status message of some sort.  That
-   doesn't happen here. */
-
-  reinit_frame_cache ();
-  registers_changed ();
-  stop_pc = read_pc ();
-  print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
-
-  return 1;
-}
-
-static void
-e7000_open (char *args, int from_tty)
-{
-  int n;
-
-  target_preopen (from_tty);
-
-  n = e7000_parse_device (args, dev_name, baudrate);
-
-  push_target (&e7000_ops);
-
-  e7000_desc = serial_open (dev_name);
-
-  if (!e7000_desc)
-    perror_with_name (dev_name);
-
-  if (serial_setbaudrate (e7000_desc, baudrate))
-    {
-      serial_close (e7000_desc);
-      perror_with_name (dev_name);
-    }
-  serial_raw (e7000_desc);
-
-  /* Start the remote connection; if error (0), discard this target.
-     In particular, if the user quits, be sure to discard it
-     (we'd be in an inconsistent state otherwise).  */
-  if (!catch_errors (e7000_start_remote, (char *) 0,
-       "Couldn't establish connection to remote target\n", RETURN_MASK_ALL))
-    if (from_tty)
-      printf_filtered ("Remote target %s connected to %s\n", target_shortname,
-		       dev_name);
-}
-
-/* Close out all files and local state before this target loses control. */
-
-static void
-e7000_close (int quitting)
-{
-  if (e7000_desc)
-    {
-      serial_close (e7000_desc);
-      e7000_desc = 0;
-    }
-}
-
-/* Terminate the open connection to the remote debugger.  Use this
-   when you want to detach and do something else with your gdb.  */
-
-static void
-e7000_detach (char *arg, int from_tty)
-{
-  pop_target ();		/* calls e7000_close to do the real work */
-  if (from_tty)
-    printf_unfiltered ("Ending remote %s debugging\n", target_shortname);
-}
-
-/* Tell the remote machine to resume.  */
-
-static void
-e7000_resume (ptid_t ptid, int step, enum target_signal sigal)
-{
-  if (step)
-    puts_e7000debug ("S\r");
-  else
-    puts_e7000debug ("G\r");
-}
-
-/* Read the remote registers into the block REGS.  
-
-   For the H8/300 a register dump looks like:
-
-   PC=00021A  CCR=80:I*******
-   ER0 - ER3  0000000A 0000002E 0000002E 00000000
-   ER4 - ER7  00000000 00000000 00000000 00FFEFF6
-   000218           MOV.B     R1L,R2L
-   STEP NORMAL END or
-   BREAK POINT
- */
-
-char *want_h8300h = "PC=%p CCR=%c\n\
- ER0 - ER3  %0 %1 %2 %3\n\
- ER4 - ER7  %4 %5 %6 %7\n";
-
-char *want_nopc_h8300h = "%p CCR=%c\n\
- ER0 - ER3  %0 %1 %2 %3\n\
- ER4 - ER7  %4 %5 %6 %7";
-
-char *want_h8300s = "PC=%p CCR=%c\n\
- MACH=\n\
- ER0 - ER3  %0 %1 %2 %3\n\
- ER4 - ER7  %4 %5 %6 %7\n";
-
-char *want_nopc_h8300s = "%p CCR=%c EXR=%9\n\
- ER0 - ER3  %0 %1 %2 %3\n\
- ER4 - ER7  %4 %5 %6 %7";
-
-char *want_sh = "PC=%16 SR=%22\n\
-PR=%17 GBR=%18 VBR=%19\n\
-MACH=%20 MACL=%21\n\
-R0-7  %0 %1 %2 %3 %4 %5 %6 %7\n\
-R8-15 %8 %9 %10 %11 %12 %13 %14 %15\n";
-
-char *want_nopc_sh = "%16 SR=%22\n\
- PR=%17 GBR=%18 VBR=%19\n\
- MACH=%20 MACL=%21\n\
- R0-7  %0 %1 %2 %3 %4 %5 %6 %7\n\
- R8-15 %8 %9 %10 %11 %12 %13 %14 %15";
-
-char *want_sh3 = "PC=%16 SR=%22\n\
-PR=%17 GBR=%18 VBR=%19\n\
-MACH=%20 MACL=%21 SSR=%23 SPC=%24\n\
-R0-7  %0 %1 %2 %3 %4 %5 %6 %7\n\
-R8-15 %8 %9 %10 %11 %12 %13 %14 %15\n\
-R0_BANK0-R3_BANK0 %25 %26 %27 %28\n\
-R4_BANK0-R7_BANK0 %29 %30 %31 %32\n\
-R0_BANK1-R3_BANK1 %33 %34 %35 %36\n\
-R4_BANK1-R7_BANK1 %37 %38 %39 %40";
-
-char *want_nopc_sh3 = "%16 SR=%22\n\
- PR=%17 GBR=%18 VBR=%19\n\
- MACH=%20 MACL=%21 SSR=%22 SPC=%23\n\
- R0-7  %0 %1 %2 %3 %4 %5 %6 %7\n\
- R8-15 %8 %9 %10 %11 %12 %13 %14 %15\n\
- R0_BANK0-R3_BANK0 %25 %26 %27 %28\n\
- R4_BANK0-R7_BANK0 %29 %30 %31 %32\n\
- R0_BANK1-R3_BANK1 %33 %34 %35 %36\n\
- R4_BANK1-R7_BANK1 %37 %38 %39 %40";
-
-static int
-gch (void)
-{
-  return readchar (timeout);
-}
-
-static unsigned int
-gbyte (void)
-{
-  int high = convert_hex_digit (gch ());
-  int low = convert_hex_digit (gch ());
-
-  return (high << 4) + low;
-}
-
-static void
-fetch_regs_from_dump (int (*nextchar) (), char *want)
-{
-  int regno;
-  char buf[MAX_REGISTER_SIZE];
-
-  int thischar = nextchar ();
-
-  if (want == NULL)
-    internal_error (__FILE__, __LINE__, _("Register set not selected."));
-
-  while (*want)
-    {
-      switch (*want)
-	{
-	case '\n':
-	  /* Skip to end of line and then eat all new line type stuff */
-	  while (thischar != '\n' && thischar != '\r')
-	    thischar = nextchar ();
-	  while (thischar == '\n' || thischar == '\r')
-	    thischar = nextchar ();
-	  want++;
-	  break;
-
-	case ' ':
-	  while (thischar == ' '
-		 || thischar == '\t'
-		 || thischar == '\r'
-		 || thischar == '\n')
-	    thischar = nextchar ();
-	  want++;
-	  break;
-
-	default:
-	  if (*want == thischar)
-	    {
-	      want++;
-	      if (*want)
-		thischar = nextchar ();
-
-	    }
-	  else if (thischar == ' ' || thischar == '\n' || thischar == '\r')
-	    {
-	      thischar = nextchar ();
-	    }
-	  else
-	    {
-	      error (_("out of sync in fetch registers wanted <%s>, got <%c 0x%x>"),
-		     want, thischar, thischar);
-	    }
-
-	  break;
-	case '%':
-	  /* Got a register command */
-	  want++;
-	  switch (*want)
-	    {
-#ifdef PC_REGNUM
-	    case 'p':
-	      regno = PC_REGNUM;
-	      want++;
-	      break;
-#endif
-#ifdef CCR_REGNUM
-	    case 'c':
-	      regno = CCR_REGNUM;
-	      want++;
-	      break;
-#endif
-#ifdef SP_REGNUM
-	    case 's':
-	      regno = SP_REGNUM;
-	      want++;
-	      break;
-#endif
-#ifdef DEPRECATED_FP_REGNUM
-	    case 'f':
-	      regno = DEPRECATED_FP_REGNUM;
-	      want++;
-	      break;
-#endif
-
-	    default:
-	      if (isdigit (want[0]))
-		{
-		  if (isdigit (want[1]))
-		    {
-		      regno = (want[0] - '0') * 10 + want[1] - '0';
-		      want += 2;
-		    }
-		  else
-		    {
-		      regno = want[0] - '0';
-		      want++;
-		    }
-		}
-
-	      else
-		internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
-	    }
-	  store_signed_integer (buf,
-				register_size (current_gdbarch, regno),
-				(LONGEST) get_hex (&thischar));
-	  regcache_raw_supply (current_regcache, regno, buf);
-	  break;
-	}
-    }
-}
-
-static void
-e7000_fetch_registers (void)
-{
-  int regno;
-  char *wanted = NULL;
-  int realregs = 0;
-
-  puts_e7000debug ("R\r");
-
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
-    {
-      wanted = want_sh;
-      realregs = 59;
-      switch (TARGET_ARCHITECTURE->mach)
-	{
-	case bfd_mach_sh3:
-	case bfd_mach_sh3e:
-	case bfd_mach_sh4:
-	  wanted = want_sh3;
-	}
-    }
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300)
-    {
-      wanted = want_h8300h;
-      realregs = 10;
-      switch (TARGET_ARCHITECTURE->mach)
-	{
-	case bfd_mach_h8300s:
-	case bfd_mach_h8300sn:
-	case bfd_mach_h8300sx:
-	case bfd_mach_h8300sxn:
-	  wanted = want_h8300s;
-	  realregs = 11;
-	}
-    }
-
-  fetch_regs_from_dump (gch, wanted);
-
-  /* And supply the extra ones the simulator uses */
-  for (regno = realregs; regno < NUM_REGS; regno++)
-    {
-      int buf = 0;
-
-      regcache_raw_supply (current_regcache, regno, (char *) (&buf));
-    }
-}
-
-/* Fetch register REGNO, or all registers if REGNO is -1.  Returns
-   errno value.  */
-
-static void
-e7000_fetch_register (int regno)
-{
-  e7000_fetch_registers ();
-}
-
-/* Store the remote registers from the contents of the block REGS.  */
-
-static void
-e7000_store_registers (void)
-{
-  int regno;
-  int realregs = 0;
-
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
-    realregs = 59;
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300) {
-    realregs = ((TARGET_ARCHITECTURE->mach == bfd_mach_h8300s ||
-		 TARGET_ARCHITECTURE->mach == bfd_mach_h8300sn ||
-		 TARGET_ARCHITECTURE->mach == bfd_mach_h8300sx ||
-		 TARGET_ARCHITECTURE->mach == bfd_mach_h8300sxn) ? 11 : 10);
-  }
-
-  for (regno = 0; regno < realregs; regno++)
-    e7000_store_register (regno);
-
-  registers_changed ();
-}
-
-/* Store register REGNO, or all if REGNO == 0.  Return errno value.  */
-
-static void
-e7000_store_register (int regno)
-{
-  char buf[200];
-
-  if (regno == -1)
-    {
-      e7000_store_registers ();
-      return;
-    }
-
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300)
-    {
-      if (regno <= 7)
-	{
-	  sprintf (buf, ".ER%d %s\r", regno, phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-      else if (regno == PC_REGNUM)
-	{
-	  sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-#ifdef CCR_REGNUM
-      else if (regno == CCR_REGNUM)
-	{
-	  sprintf (buf, ".CCR %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-#endif
-    }
-
-  else if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
-    {
-      if (regno == PC_REGNUM)
-	{
-	  sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno == SR_REGNUM)
-	{
-	  sprintf (buf, ".SR %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno ==  PR_REGNUM)
-	{
-	  sprintf (buf, ".PR %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno == GBR_REGNUM)
-	{
-	  sprintf (buf, ".GBR %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno == VBR_REGNUM)
-	{
-	  sprintf (buf, ".VBR %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno == MACH_REGNUM)
-	{
-	  sprintf (buf, ".MACH %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-
-      else if (regno == MACL_REGNUM)
-	{
-	  sprintf (buf, ".MACL %s\r", phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-      else
-	{
-	  sprintf (buf, ".R%d %s\r", regno, phex_nz (read_register (regno), 0));
-	  puts_e7000debug (buf);
-	}
-    }
-
-  expect_prompt ();
-}
-
-/* Get ready to modify the registers array.  On machines which store
-   individual registers, this doesn't need to do anything.  On machines
-   which store all the registers in one fell swoop, this makes sure
-   that registers contains all the registers from the program being
-   debugged.  */
-
-static void
-e7000_prepare_to_store (void)
-{
-  /* Do nothing, since we can store individual regs */
-}
-
-static void
-e7000_files_info (struct target_ops *ops)
-{
-  printf_unfiltered ("\tAttached to %s at %d baud.\n", dev_name, baudrate);
-}
-
-static int
-stickbyte (char *where, unsigned int what)
-{
-  static CONST char digs[] = "0123456789ABCDEF";
-
-  where[0] = digs[(what >> 4) & 0xf];
-  where[1] = digs[(what & 0xf) & 0xf];
-
-  return what;
-}
-
-/* Write a small ammount of memory. */
-
-static int
-write_small (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int i;
-  char buf[200];
-
-  for (i = 0; i < len; i++)
-    {
-      if (((memaddr + i) & 3) == 0 && (i + 3 < len))
-	{
-	  /* Can be done with a long word */
-	  sprintf (buf, "m %s %x%02x%02x%02x;l\r",
-		   paddr_nz (memaddr + i),
-		   myaddr[i], myaddr[i + 1], myaddr[i + 2], myaddr[i + 3]);
-	  puts_e7000debug (buf);
-	  i += 3;
-	}
-      else
-	{
-	  sprintf (buf, "m %s %x\r", paddr_nz (memaddr + i), myaddr[i]);
-	  puts_e7000debug (buf);
-	}
-    }
-
-  expect_prompt ();
-
-  return len;
-}
-
-/* Write a large ammount of memory, this only works with the serial
-   mode enabled.  Command is sent as
-
-   il ;s:s\r     ->
-   <- il ;s:s\r
-   <-   ENQ
-   ACK          ->
-   <- LO s\r
-   Srecords...
-   ^Z           ->
-   <-   ENQ
-   ACK          ->  
-   <-   :       
- */
-
-static int
-write_large (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int i;
-#define maxstride  128
-  int stride;
-
-  puts_e7000debug ("IL ;S:FK\r");
-  expect (ENQSTRING);
-  putchar_e7000 (ACK);
-  expect ("LO FK\r");
-
-  for (i = 0; i < len; i += stride)
-    {
-      char compose[maxstride * 2 + 50];
-      int address = i + memaddr;
-      int j;
-      int check_sum;
-      int where = 0;
-      int alen;
-
-      stride = len - i;
-      if (stride > maxstride)
-	stride = maxstride;
-
-      compose[where++] = 'S';
-      check_sum = 0;
-      if (address >= 0xffffff)
-	alen = 4;
-      else if (address >= 0xffff)
-	alen = 3;
-      else
-	alen = 2;
-      /* Insert type. */
-      compose[where++] = alen - 1 + '0';
-      /* Insert length. */
-      check_sum += stickbyte (compose + where, alen + stride + 1);
-      where += 2;
-      while (alen > 0)
-	{
-	  alen--;
-	  check_sum += stickbyte (compose + where, address >> (8 * (alen)));
-	  where += 2;
-	}
-
-      for (j = 0; j < stride; j++)
-	{
-	  check_sum += stickbyte (compose + where, myaddr[i + j]);
-	  where += 2;
-	}
-      stickbyte (compose + where, ~check_sum);
-      where += 2;
-      compose[where++] = '\r';
-      compose[where++] = '\n';
-      compose[where++] = 0;
-
-      serial_write (e7000_desc, compose, where);
-      j = readchar (0);
-      if (j == -1)
-	{
-	  /* This is ok - nothing there */
-	}
-      else if (j == ENQ)
-	{
-	  /* Hmm, it's trying to tell us something */
-	  expect (":");
-	  error (_("Error writing memory"));
-	}
-      else
-	{
-	  printf_unfiltered ("@%d}@", j);
-	  while ((j = readchar (0)) > 0)
-	    {
-	      printf_unfiltered ("@{%d}@", j);
-	    }
-	}
-    }
-
-  /* Send the trailer record */
-  write_e7000 ("S70500000000FA\r");
-  putchar_e7000 (CTRLZ);
-  expect (ENQSTRING);
-  putchar_e7000 (ACK);
-  expect (":");
-
-  return len;
-}
-
-/* Copy LEN bytes of data from debugger memory at MYADDR to inferior's
-   memory at MEMADDR.  Returns length moved.
-
-   Can't use the Srecord load over ethernet, so don't use fast method
-   then.  */
-
-static int
-e7000_write_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  if (len < 16 || using_tcp || using_pc)
-    return write_small (memaddr, myaddr, len);
-  else
-    return write_large (memaddr, myaddr, len);
-}
-
-/* Read LEN bytes from inferior memory at MEMADDR.  Put the result
-   at debugger address MYADDR.  Returns length moved. 
-
-   Small transactions we send
-   m <addr>;l
-   and receive
-   00000000 12345678 ?
- */
-
-static int
-e7000_read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int count;
-  int c;
-  int i;
-  char buf[200];
-  /* Starting address of this pass.  */
-
-/*  printf("READ INF %x %x %d\n", memaddr, myaddr, len); */
-  if (((memaddr - 1) + len) < memaddr)
-    {
-      errno = EIO;
-      return 0;
-    }
-
-  sprintf (buf, "m %s;l\r", paddr_nz (memaddr));
-  puts_e7000debug (buf);
-
-  for (count = 0; count < len; count += 4)
-    {
-      /* Suck away the address */
-      c = gch ();
-      while (c != ' ')
-	c = gch ();
-      c = gch ();
-      if (c == '*')
-	{			/* Some kind of error */
-	  puts_e7000debug (".\r");	/* Some errors leave us in memory input mode */
-	  expect_full_prompt ();
-	  return -1;
-	}
-      while (c != ' ')
-	c = gch ();
-
-      /* Now read in the data */
-      for (i = 0; i < 4; i++)
-	{
-	  int b = gbyte ();
-	  if (count + i < len)
-	    {
-	      myaddr[count + i] = b;
-	    }
-	}
-
-      /* Skip the trailing ? and send a . to end and a cr for more */
-      gch ();
-      gch ();
-      if (count + 4 >= len)
-	puts_e7000debug (".\r");
-      else
-	puts_e7000debug ("\r");
-
-    }
-  expect_prompt ();
-  return len;
-}
-
-
-
-/*
-   For large transfers we used to send
-
-
-   d <addr> <endaddr>\r
-
-   and receive
-   <ADDRESS>           <    D   A   T   A    >               <   ASCII CODE   >
-   00000000 5F FD FD FF DF 7F DF FF  01 00 01 00 02 00 08 04  "_..............."
-   00000010 FF D7 FF 7F D7 F1 7F FF  00 05 00 00 08 00 40 00  "..............@."
-   00000020 7F FD FF F7 7F FF FF F7  00 00 00 00 00 00 00 00  "................"
-
-   A cost in chars for each transaction of 80 + 5*n-bytes. 
-
-   Large transactions could be done with the srecord load code, but
-   there is a pause for a second before dumping starts, which slows the
-   average rate down!
- */
-
-static int
-e7000_read_inferior_memory_large (CORE_ADDR memaddr, unsigned char *myaddr,
-				  int len)
-{
-  int count;
-  int c;
-  char buf[200];
-
-  /* Starting address of this pass.  */
-
-  if (((memaddr - 1) + len) < memaddr)
-    {
-      errno = EIO;
-      return 0;
-    }
-
-  sprintf (buf, "d %s %s\r", paddr_nz (memaddr), paddr_nz (memaddr + len - 1));
-  puts_e7000debug (buf);
-
-  count = 0;
-  c = gch ();
-
-  /* skip down to the first ">" */
-  while (c != '>')
-    c = gch ();
-  /* now skip to the end of that line */
-  while (c != '\r')
-    c = gch ();
-  c = gch ();
-
-  while (count < len)
-    {
-      /* get rid of any white space before the address */
-      while (c <= ' ')
-	c = gch ();
-
-      /* Skip the address */
-      get_hex (&c);
-
-      /* read in the bytes on the line */
-      while (c != '"' && count < len)
-	{
-	  if (c == ' ')
-	    c = gch ();
-	  else
-	    {
-	      myaddr[count++] = get_hex (&c);
-	    }
-	}
-      /* throw out the rest of the line */
-      while (c != '\r')
-	c = gch ();
-    }
-
-  /* wait for the ":" prompt */
-  while (c != ':')
-    c = gch ();
-
-  return len;
-}
-
-#if 0
-
-static int
-fast_but_for_the_pause_e7000_read_inferior_memory (CORE_ADDR memaddr,
-						   char *myaddr, int len)
-{
-  int loop;
-  int c;
-  char buf[200];
-
-  if (((memaddr - 1) + len) < memaddr)
-    {
-      errno = EIO;
-      return 0;
-    }
-
-  sprintf (buf, "is %x@%x:s\r", memaddr, len);
-  puts_e7000debug (buf);
-  gch ();
-  c = gch ();
-  if (c != ENQ)
-    {
-      /* Got an error */
-      error (_("Memory read error"));
-    }
-  putchar_e7000 (ACK);
-  expect ("SV s");
-  loop = 1;
-  while (loop)
-    {
-      int type;
-      int length;
-      int addr;
-      int i;
-
-      c = gch ();
-      switch (c)
-	{
-	case ENQ:		/* ENQ, at the end */
-	  loop = 0;
-	  break;
-	case 'S':
-	  /* Start of an Srecord */
-	  type = gch ();
-	  length = gbyte ();
-	  switch (type)
-	    {
-	    case '7':		/* Termination record, ignore */
-	    case '0':
-	    case '8':
-	    case '9':
-	      /* Header record - ignore it */
-	      while (length--)
-		{
-		  gbyte ();
-		}
-	      break;
-	    case '1':
-	    case '2':
-	    case '3':
-	      {
-		int alen;
-
-		alen = type - '0' + 1;
-		addr = 0;
-		while (alen--)
-		  {
-		    addr = (addr << 8) + gbyte ();
-		    length--;
-		  }
-
-		for (i = 0; i < length - 1; i++)
-		  myaddr[i + addr - memaddr] = gbyte ();
-
-		gbyte ();	/* Ignore checksum */
-	      }
-	    }
-	}
-    }
-
-  putchar_e7000 (ACK);
-  expect ("TOP ADDRESS =");
-  expect ("END ADDRESS =");
-  expect (":");
-
-  return len;
-}
-
-#endif
-
-/* Transfer LEN bytes between GDB address MYADDR and target address
-   MEMADDR.  If WRITE is non-zero, transfer them to the target,
-   otherwise transfer them from the target.  TARGET is unused.
-
-   Returns the number of bytes transferred. */
-
-static int
-e7000_xfer_inferior_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
-			    int write, struct mem_attrib *attrib,
-			    struct target_ops *target)
-{
-  if (write)
-    return e7000_write_inferior_memory (memaddr, myaddr, len);
-  else if (len < 16)
-    return e7000_read_inferior_memory (memaddr, myaddr, len);
-  else
-    return e7000_read_inferior_memory_large (memaddr, myaddr, len);
-}
-
-static void
-e7000_kill (void)
-{
-}
-
-static void
-e7000_load (char *args, int from_tty)
-{
-  struct cleanup *old_chain;
-  asection *section;
-  bfd *pbfd;
-  bfd_vma entry;
-#define WRITESIZE 0x1000
-  char buf[2 + 4 + 4 + WRITESIZE];	/* `DT' + <addr> + <len> + <data> */
-  char *filename;
-  int quiet;
-  int nostart;
-  time_t start_time, end_time;	/* Start and end times of download */
-  unsigned long data_count;	/* Number of bytes transferred to memory */
-  int oldtimeout = timeout;
-
-  timeout = remote_timeout;
-
-
-  /* FIXME! change test to test for type of download */
-  if (!using_tcp)
-    {
-      generic_load (args, from_tty);
-      return;
-    }
-
-  /* for direct tcp connections, we can do a fast binary download */
-  buf[0] = 'D';
-  buf[1] = 'T';
-  quiet = 0;
-  nostart = 0;
-  filename = NULL;
-
-  while (*args != '\000')
-    {
-      char *arg;
-
-      while (isspace (*args))
-	args++;
-
-      arg = args;
-
-      while ((*args != '\000') && !isspace (*args))
-	args++;
-
-      if (*args != '\000')
-	*args++ = '\000';
-
-      if (*arg != '-')
-	filename = arg;
-      else if (strncmp (arg, "-quiet", strlen (arg)) == 0)
-	quiet = 1;
-      else if (strncmp (arg, "-nostart", strlen (arg)) == 0)
-	nostart = 1;
-      else
-	error (_("unknown option `%s'"), arg);
-    }
-
-  if (!filename)
-    filename = get_exec_file (1);
-
-  pbfd = bfd_openr (filename, gnutarget);
-  if (pbfd == NULL)
-    {
-      perror_with_name (filename);
-      return;
-    }
-  old_chain = make_cleanup_bfd_close (pbfd);
-
-  if (!bfd_check_format (pbfd, bfd_object))
-    error (_("\"%s\" is not an object file: %s"), filename,
-	   bfd_errmsg (bfd_get_error ()));
-
-  start_time = time (NULL);
-  data_count = 0;
-
-  puts_e7000debug ("mw\r");
-
-  expect ("\nOK");
-
-  for (section = pbfd->sections; section; section = section->next)
-    {
-      if (bfd_get_section_flags (pbfd, section) & SEC_LOAD)
-	{
-	  bfd_vma section_address;
-	  bfd_size_type section_size;
-	  file_ptr fptr;
-
-	  section_address = bfd_get_section_vma (pbfd, section);
-	  section_size = bfd_get_section_size (section);
-
-	  if (!quiet)
-	    printf_filtered ("[Loading section %s at 0x%s (%s bytes)]\n",
-			     bfd_get_section_name (pbfd, section),
-			     paddr_nz (section_address),
-			     paddr_u (section_size));
-
-	  fptr = 0;
-
-	  data_count += section_size;
-
-	  while (section_size > 0)
-	    {
-	      int count;
-	      static char inds[] = "|/-\\";
-	      static int k = 0;
-
-	      QUIT;
-
-	      count = min (section_size, WRITESIZE);
-
-	      buf[2] = section_address >> 24;
-	      buf[3] = section_address >> 16;
-	      buf[4] = section_address >> 8;
-	      buf[5] = section_address;
-
-	      buf[6] = count >> 24;
-	      buf[7] = count >> 16;
-	      buf[8] = count >> 8;
-	      buf[9] = count;
-
-	      bfd_get_section_contents (pbfd, section, buf + 10, fptr, count);
-
-	      if (serial_write (e7000_desc, buf, count + 10))
-		fprintf_unfiltered (gdb_stderr,
-				    "e7000_load: serial_write failed: %s\n",
-				    safe_strerror (errno));
-
-	      expect ("OK");
-
-	      if (!quiet)
-		{
-		  printf_unfiltered ("\r%c", inds[k++ % 4]);
-		  gdb_flush (gdb_stdout);
-		}
-
-	      section_address += count;
-	      fptr += count;
-	      section_size -= count;
-	    }
-	}
-    }
-
-  write_e7000 ("ED");
-
-  expect_prompt ();
-
-  end_time = time (NULL);
-
-/* Finally, make the PC point at the start address */
-
-  if (exec_bfd)
-    write_pc (bfd_get_start_address (exec_bfd));
-
-  inferior_ptid = null_ptid;	/* No process now */
-
-/* This is necessary because many things were based on the PC at the time that
-   we attached to the monitor, which is no longer valid now that we have loaded
-   new code (and just changed the PC).  Another way to do this might be to call
-   normal_stop, except that the stack may not be valid, and things would get
-   horribly confused... */
-
-  clear_symtab_users ();
-
-  if (!nostart)
-    {
-      entry = bfd_get_start_address (pbfd);
-
-      if (!quiet)
-	printf_unfiltered ("[Starting %s at 0x%s]\n", filename, paddr_nz (entry));
-
-/*      start_routine (entry); */
-    }
-
-  report_transfer_performance (data_count, start_time, end_time);
-
-  do_cleanups (old_chain);
-  timeout = oldtimeout;
-}
-
-/* Clean up when a program exits.
-
-   The program actually lives on in the remote processor's RAM, and may be
-   run again without a download.  Don't leave it full of breakpoint
-   instructions.  */
-
-static void
-e7000_mourn_inferior (void)
-{
-  remove_breakpoints ();
-  unpush_target (&e7000_ops);
-  generic_mourn_inferior ();	/* Do all the proper things now */
-}
-
-#define MAX_BREAKPOINTS 200
-#ifdef  HARD_BREAKPOINTS
-#define MAX_E7000DEBUG_BREAKPOINTS (BC_BREAKPOINTS ? 5 :  MAX_BREAKPOINTS)
-#else
-#define MAX_E7000DEBUG_BREAKPOINTS MAX_BREAKPOINTS
-#endif
-
-/* Since we can change to soft breakpoints dynamically, we must define 
-   more than enough.  Was breakaddr[MAX_E7000DEBUG_BREAKPOINTS]. */
-static CORE_ADDR breakaddr[MAX_BREAKPOINTS] =
-{0};
-
-static int
-e7000_insert_breakpoint (struct bp_target_info *bp_tgt)
-{
-  CORE_ADDR addr = bp_tgt->placed_address;
-  int i;
-  char buf[200];
-#if 0
-  static char nop[2] = NOP;
-#endif
-
-  for (i = 0; i <= MAX_E7000DEBUG_BREAKPOINTS; i++)
-    if (breakaddr[i] == 0)
-      {
-	breakaddr[i] = addr;
-	/* Save old contents, and insert a nop in the space */
-#ifdef HARD_BREAKPOINTS
-	if (BC_BREAKPOINTS)
-	  {
-	    sprintf (buf, "BC%d A=%s\r", i + 1, paddr_nz (addr));
-	    puts_e7000debug (buf);
-	  }
-	else
-	  {
-	    sprintf (buf, "B %s\r", paddr_nz (addr));
-	    puts_e7000debug (buf);
-	  }
-#else
-#if 0
-	bp_tgt->shadow_len = 2;
-	e7000_read_inferior_memory (addr, bp_tgt->shadow_contents, 2);
-	e7000_write_inferior_memory (addr, nop, 2);
-#endif
-
-	sprintf (buf, "B %x\r", addr);
-	puts_e7000debug (buf);
-#endif
-	expect_prompt ();
-	return 0;
-      }
-
-  error (_("Too many breakpoints ( > %d) for the E7000."),
-	 MAX_E7000DEBUG_BREAKPOINTS);
-  return 1;
-}
-
-static int
-e7000_remove_breakpoint (struct bp_target_info *bp_tgt)
-{
-  CORE_ADDR addr = bp_tgt->placed_address;
-  int i;
-  char buf[200];
-
-  for (i = 0; i < MAX_E7000DEBUG_BREAKPOINTS; i++)
-    if (breakaddr[i] == addr)
-      {
-	breakaddr[i] = 0;
-#ifdef HARD_BREAKPOINTS
-	if (BC_BREAKPOINTS)
-	  {
-	    sprintf (buf, "BC%d - \r", i + 1);
-	    puts_e7000debug (buf);
-	  }
-	else
-	  {
-	    sprintf (buf, "B - %s\r", paddr_nz (addr));
-	    puts_e7000debug (buf);
-	  }
-	expect_prompt ();
-#else
-	sprintf (buf, "B - %s\r", paddr_nz (addr));
-	puts_e7000debug (buf);
-	expect_prompt ();
-
-#if 0
-	/* Replace the insn under the break */
-	e7000_write_inferior_memory (addr, bp_tgt->shadow_contents,
-				     bp_tgt->shadow_len);
-#endif
-#endif
-
-	return 0;
-      }
- 
-  warning (_("Can't find breakpoint associated with 0x%s."), paddr_nz (addr));
-  return 1;
-}
-
-/* Put a command string, in args, out to STDBUG.  Output from STDBUG
-   is placed on the users terminal until the prompt is seen. */
-
-static void
-e7000_command (char *args, int fromtty)
-{
-  /* FIXME: arbitrary limit on length of args.  */
-  char buf[200];
-
-  echo = 0;
-
-  if (!e7000_desc)
-    error (_("e7000 target not open."));
-  if (!args)
-    {
-      puts_e7000debug ("\r");
-    }
-  else
-    {
-      sprintf (buf, "%s\r", args);
-      puts_e7000debug (buf);
-    }
-
-  echo++;
-  ctrl_c = 2;
-  expect_full_prompt ();
-  echo--;
-  ctrl_c = 0;
-  printf_unfiltered ("\n");
-
-  /* Who knows what the command did... */
-  registers_changed ();
-}
-
-
-static void
-e7000_drain_command (char *args, int fromtty)
-{
-  int c;
-
-  puts_e7000debug ("end\r");
-  putchar_e7000 (CTRLC);
-
-  while ((c = readchar (1)) != -1)
-    {
-      if (quit_flag)
-	{
-	  putchar_e7000 (CTRLC);
-	  quit_flag = 0;
-	}
-      if (c > ' ' && c < 127)
-	printf_unfiltered ("%c", c & 0xff);
-      else
-	printf_unfiltered ("<%x>", c & 0xff);
-    }
-}
-
-#define NITEMS 7
-
-static int
-why_stop (void)
-{
-  static char *strings[NITEMS] =
-  {
-    "STEP NORMAL",
-    "BREAK POINT",
-    "BREAK KEY",
-    "BREAK CONDI",
-    "CYCLE ACCESS",
-    "ILLEGAL INSTRUCTION",
-    "WRITE PROTECT",
-  };
-  char *p[NITEMS];
-  int c;
-  int i;
-
-  for (i = 0; i < NITEMS; ++i)
-    p[i] = strings[i];
-
-  c = gch ();
-  while (1)
-    {
-      for (i = 0; i < NITEMS; i++)
-	{
-	  if (c == *(p[i]))
-	    {
-	      p[i]++;
-	      if (*(p[i]) == 0)
-		{
-		  /* found one of the choices */
-		  return i;
-		}
-	    }
-	  else
-	    p[i] = strings[i];
-	}
-
-      c = gch ();
-    }
-}
-
-/* Suck characters, if a string match, then return the strings index
-   otherwise echo them.  */
-
-static int
-expect_n (char **strings)
-{
-  char *(ptr[10]);
-  int n;
-  int c;
-  char saveaway[100];
-  char *buffer = saveaway;
-  /* Count number of expect strings  */
-
-  for (n = 0; strings[n]; n++)
-    {
-      ptr[n] = strings[n];
-    }
-
-  while (1)
-    {
-      int i;
-      int gotone = 0;
-
-      c = readchar (1);
-      if (c == -1)
-	{
-	  printf_unfiltered ("[waiting for e7000...]\n");
-	}
-#ifdef __GO32__
-      if (kbhit ())
-	{
-	  int k = getkey ();
-
-	  if (k == 1)
-	    quit_flag = 1;
-	}
-#endif
-      if (quit_flag)
-	{
-	  putchar_e7000 (CTRLC);	/* interrupt the running program */
-	  quit_flag = 0;
-	}
-
-      for (i = 0; i < n; i++)
-	{
-	  if (c == ptr[i][0])
-	    {
-	      ptr[i]++;
-	      if (ptr[i][0] == 0)
-		{
-		  /* Gone all the way */
-		  return i;
-		}
-	      gotone = 1;
-	    }
-	  else
-	    {
-	      ptr[i] = strings[i];
-	    }
-	}
-
-      if (gotone)
-	{
-	  /* Save it up incase we find that there was no match */
-	  *buffer++ = c;
-	}
-      else
-	{
-	  if (buffer != saveaway)
-	    {
-	      *buffer++ = 0;
-	      printf_unfiltered ("%s", buffer);
-	      buffer = saveaway;
-	    }
-	  if (c != -1)
-	    {
-	      putchar_unfiltered (c);
-	      gdb_flush (gdb_stdout);
-	    }
-	}
-    }
-}
-
-/* We subtract two from the pc here rather than use
-   DECR_PC_AFTER_BREAK since the e7000 doesn't always add two to the
-   pc, and the simulators never do. */
-
-static void
-sub2_from_pc (void)
-{
-  char buf[4];
-  char buf2[200];
-
-  store_signed_integer (buf,
-			register_size (current_gdbarch, PC_REGNUM),
-			read_register (PC_REGNUM) - 2);
-  regcache_raw_supply (current_regcache, PC_REGNUM, buf);
-  sprintf (buf2, ".PC %s\r", phex_nz (read_register (PC_REGNUM), 0));
-  puts_e7000debug (buf2);
-}
-
-#define WAS_SLEEP 0
-#define WAS_INT 1
-#define WAS_RUNNING 2
-#define WAS_OTHER 3
-
-static char *estrings[] =
-{
-  "** SLEEP",
-  "BREAK !",
-  "** PC",
-  "PC",
-  NULL
-};
-
-/* Wait until the remote machine stops, then return, storing status in
-   STATUS just as `wait' would.  */
-
-static ptid_t
-e7000_wait (ptid_t ptid, struct target_waitstatus *status)
-{
-  int stop_reason;
-  int regno;
-  int running_count = 0;
-  int had_sleep = 0;
-  int loop = 1;
-  char *wanted_nopc = NULL;
-  int realregs = 0;
-
-  /* Then echo chars until PC= string seen */
-  gch ();			/* Drop cr */
-  gch ();			/* and space */
-
-  while (loop)
-    {
-      switch (expect_n (estrings))
-	{
-	case WAS_OTHER:
-	  /* how did this happen ? */
-	  loop = 0;
-	  break;
-	case WAS_SLEEP:
-	  had_sleep = 1;
-	  putchar_e7000 (CTRLC);
-	  loop = 0;
-	  break;
-	case WAS_INT:
-	  loop = 0;
-	  break;
-	case WAS_RUNNING:
-	  running_count++;
-	  if (running_count == 20)
-	    {
-	      printf_unfiltered ("[running...]\n");
-	      running_count = 0;
-	    }
-	  break;
-	default:
-	  /* error? */
-	  break;
-	}
-    }
-
-  /* Skip till the PC= */
-  expect ("=");
-
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
-    {
-      wanted_nopc = want_nopc_sh;
-      realregs = 59;
-      switch (TARGET_ARCHITECTURE->mach)
-	{
-	case bfd_mach_sh3:
-	case bfd_mach_sh3e:
-	case bfd_mach_sh4:
-	  wanted_nopc = want_nopc_sh3;
-	}
-    }
-  if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300)
-    {
-      wanted_nopc = want_nopc_h8300h;
-      realregs = 10;
-      switch (TARGET_ARCHITECTURE->mach)
-	{
-	case bfd_mach_h8300s:
-	case bfd_mach_h8300sn:
-	case bfd_mach_h8300sx:
-	case bfd_mach_h8300sxn:
-	  wanted_nopc = want_nopc_h8300s;
-	  realregs = 11;
-	}
-    }
-  fetch_regs_from_dump (gch, wanted_nopc);
-
-  /* And supply the extra ones the simulator uses */
-  for (regno = realregs; regno < NUM_REGS; regno++)
-    {
-      int buf = 0;
-      regcache_raw_supply (current_regcache, regno, (char *) &buf);
-    }
-
-  stop_reason = why_stop ();
-  expect_full_prompt ();
-
-  status->kind = TARGET_WAITKIND_STOPPED;
-  status->value.sig = TARGET_SIGNAL_TRAP;
-
-  switch (stop_reason)
-    {
-    case 1:			/* Breakpoint */
-      write_pc (read_pc ());	/* PC is always off by 2 for breakpoints */
-      status->value.sig = TARGET_SIGNAL_TRAP;
-      break;
-    case 0:			/* Single step */
-      status->value.sig = TARGET_SIGNAL_TRAP;
-      break;
-    case 2:			/* Interrupt */
-      if (had_sleep)
-	{
-	  status->value.sig = TARGET_SIGNAL_TRAP;
-	  sub2_from_pc ();
-	}
-      else
-	{
-	  status->value.sig = TARGET_SIGNAL_INT;
-	}
-      break;
-    case 3:
-      break;
-    case 4:
-      printf_unfiltered ("a cycle address error?\n");
-      status->value.sig = TARGET_SIGNAL_UNKNOWN;
-      break;
-    case 5:
-      status->value.sig = TARGET_SIGNAL_ILL;
-      break;
-    case 6:
-      status->value.sig = TARGET_SIGNAL_SEGV;
-      break;
-    case 7:			/* Anything else (NITEMS + 1) */
-      printf_unfiltered ("a write protect error?\n");
-      status->value.sig = TARGET_SIGNAL_UNKNOWN;
-      break;
-    default:
-      /* Get the user's attention - this should never happen. */
-      internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
-    }
-
-  return inferior_ptid;
-}
-
-/* Stop the running program.  */
-
-static void
-e7000_stop (void)
-{
-  /* Sending a ^C is supposed to stop the running program.  */
-  putchar_e7000 (CTRLC);
-}
-
-/* Define the target subroutine names. */
-
-struct target_ops e7000_ops;
-
-static void
-init_e7000_ops (void)
-{
-  e7000_ops.to_shortname = "e7000";
-  e7000_ops.to_longname = "Remote Renesas e7000 target";
-  e7000_ops.to_doc = "Use a remote Renesas e7000 ICE connected by a serial line;\n\
-or a network connection.\n\
-Arguments are the name of the device for the serial line,\n\
-the speed to connect at in bits per second.\n\
-eg\n\
-target e7000 /dev/ttya 9600\n\
-target e7000 foobar";
-  e7000_ops.to_open = e7000_open;
-  e7000_ops.to_close = e7000_close;
-  e7000_ops.to_detach = e7000_detach;
-  e7000_ops.to_resume = e7000_resume;
-  e7000_ops.to_wait = e7000_wait;
-  e7000_ops.to_fetch_registers = e7000_fetch_register;
-  e7000_ops.to_store_registers = e7000_store_register;
-  e7000_ops.to_prepare_to_store = e7000_prepare_to_store;
-  e7000_ops.deprecated_xfer_memory = e7000_xfer_inferior_memory;
-  e7000_ops.to_files_info = e7000_files_info;
-  e7000_ops.to_insert_breakpoint = e7000_insert_breakpoint;
-  e7000_ops.to_remove_breakpoint = e7000_remove_breakpoint;
-  e7000_ops.to_kill = e7000_kill;
-  e7000_ops.to_load = e7000_load;
-  e7000_ops.to_create_inferior = e7000_create_inferior;
-  e7000_ops.to_mourn_inferior = e7000_mourn_inferior;
-  e7000_ops.to_stop = e7000_stop;
-  e7000_ops.to_stratum = process_stratum;
-  e7000_ops.to_has_all_memory = 1;
-  e7000_ops.to_has_memory = 1;
-  e7000_ops.to_has_stack = 1;
-  e7000_ops.to_has_registers = 1;
-  e7000_ops.to_has_execution = 1;
-  e7000_ops.to_magic = OPS_MAGIC;
-};
-
-extern initialize_file_ftype _initialize_remote_e7000; /* -Wmissing-prototypes */
-
-void
-_initialize_remote_e7000 (void)
-{
-  init_e7000_ops ();
-  add_target (&e7000_ops);
-
-  add_com ("e7000", class_obscure, e7000_command,
-	   _("Send a command to the e7000 monitor."));
-
-  add_com ("ftplogin", class_obscure, e7000_login_command,
-	   _("Login to machine and change to directory."));
-
-  add_com ("ftpload", class_obscure, e7000_ftp_command,
-	   _("Fetch and load a file from previously described place."));
-
-  add_com ("drain", class_obscure, e7000_drain_command,
-	   _("Drain pending e7000 text buffers."));
-
-  add_setshow_integer_cmd ("usehardbreakpoints", no_class,
-			   &use_hard_breakpoints, _("\
-Set use of hardware breakpoints for all breakpoints."), _("\
-Show use of hardware breakpoints for all breakpoints."), NULL,
-			   NULL,
-			   NULL, /* FIXME: i18n: */
-			   &setlist, &showlist);
-}
diff --git a/gdb/remote-hms.c b/gdb/remote-hms.c
deleted file mode 100644
index 277261608f0..00000000000
--- a/gdb/remote-hms.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Remote debugging interface for Renesas HMS Monitor Version 1.0
-   Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2007
-   Free Software Foundation, Inc.
-   Contributed by Cygnus Support.  Written by Steve Chamberlain
-   (sac@cygnus.com).
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "monitor.h"
-#include "serial.h"
-#include "regcache.h"
-
-#define CCR_REGNUM 8
-
-static void hms_open (char *args, int from_tty);
-static void
-hms_supply_register (char *regname, int regnamelen, char *val, int vallen)
-{
-  int regno;
-
-  if (regnamelen != 2)
-    return;
-  if (regname[0] != 'P')
-    return;
-  /* We scan off all the registers in one go */
-
-  val = monitor_supply_register (PC_REGNUM, val);
-  /* Skip the ccr string */
-  while (*val != '=' && *val)
-    val++;
-
-  val = monitor_supply_register (CCR_REGNUM, val + 1);
-
-  /* Skip up to rest of regs */
-  while (*val != '=' && *val)
-    val++;
-
-  for (regno = 0; regno < 7; regno++)
-    {
-      val = monitor_supply_register (regno, val + 1);
-    }
-}
-
-/*
- * This array of registers needs to match the indexes used by GDB. The
- * whole reason this exists is because the various ROM monitors use
- * different names than GDB does, and don't support all the
- * registers either. So, typing "info reg sp" becomes a "r30".
- */
-
-static char *hms_regnames[] =
-{
-  "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "CCR", "PC", "", "", "", ""
-};
-
-/*
- * Define the monitor command strings. Since these are passed directly
- * through to a printf style function, we need can include formatting
- * strings. We also need a CR or LF on the end.
- */
-
-static struct target_ops hms_ops;
-
-static char *hms_inits[] =
-{"\003",			/* Resets the prompt, and clears repeated cmds */
- NULL};
-
-static struct monitor_ops hms_cmds;
-
-static void
-init_hms_cmds (void)
-{
-  hms_cmds.flags = MO_CLR_BREAK_USES_ADDR | MO_FILL_USES_ADDR | MO_GETMEM_NEEDS_RANGE;
-  hms_cmds.init = hms_inits;	/* Init strings */
-  hms_cmds.cont = "g\r";	/* continue command */
-  hms_cmds.step = "s\r";	/* single step */
-  hms_cmds.stop = "\003";	/* ^C interrupts the program */
-  hms_cmds.set_break = "b %x\r";	/* set a breakpoint */
-  hms_cmds.clr_break = "b - %x\r";	/* clear a breakpoint */
-  hms_cmds.clr_all_break = "b -\r";	/* clear all breakpoints */
-  hms_cmds.fill = "f %x %x %x\r";	/* fill (start end val) */
-  hms_cmds.setmem.cmdb = "m.b %x=%x\r";		/* setmem.cmdb (addr, value) */
-  hms_cmds.setmem.cmdw = "m.w %x=%x\r";		/* setmem.cmdw (addr, value) */
-  hms_cmds.setmem.cmdl = NULL;	/* setmem.cmdl (addr, value) */
-  hms_cmds.setmem.cmdll = NULL;	/* setmem.cmdll (addr, value) */
-  hms_cmds.setmem.resp_delim = NULL;	/* setreg.resp_delim */
-  hms_cmds.setmem.term = NULL;	/* setreg.term */
-  hms_cmds.setmem.term_cmd = NULL;	/* setreg.term_cmd */
-  hms_cmds.getmem.cmdb = "m.b %x %x\r";		/* getmem.cmdb (addr, addr) */
-  hms_cmds.getmem.cmdw = "m.w %x %x\r";		/* getmem.cmdw (addr, addr) */
-  hms_cmds.getmem.cmdl = NULL;	/* getmem.cmdl (addr, addr) */
-  hms_cmds.getmem.cmdll = NULL;	/* getmem.cmdll (addr, addr) */
-  hms_cmds.getmem.resp_delim = ": ";	/* getmem.resp_delim */
-  hms_cmds.getmem.term = ">";	/* getmem.term */
-  hms_cmds.getmem.term_cmd = "\003";	/* getmem.term_cmd */
-  hms_cmds.setreg.cmd = "r %s=%x\r";	/* setreg.cmd (name, value) */
-  hms_cmds.setreg.resp_delim = NULL;	/* setreg.resp_delim */
-  hms_cmds.setreg.term = NULL;	/* setreg.term */
-  hms_cmds.setreg.term_cmd = NULL;	/* setreg.term_cmd */
-  hms_cmds.getreg.cmd = "r %s\r";	/* getreg.cmd (name) */
-  hms_cmds.getreg.resp_delim = " (";	/* getreg.resp_delim */
-  hms_cmds.getreg.term = ":";	/* getreg.term */
-  hms_cmds.getreg.term_cmd = "\003";	/* getreg.term_cmd */
-  hms_cmds.dump_registers = "r\r";	/* dump_registers */
-  hms_cmds.register_pattern = "\\(\\w+\\)=\\([0-9a-fA-F]+\\)";	/* register_pattern */
-  hms_cmds.supply_register = hms_supply_register;
-  hms_cmds.load_routine = NULL;	/* load_routine (defaults to SRECs) */
-  hms_cmds.load = "tl\r";	/* download command */
-  hms_cmds.loadresp = NULL;	/* load response */
-  hms_cmds.prompt = ">";	/* monitor command prompt */
-  hms_cmds.line_term = "\r";	/* end-of-command delimitor */
-  hms_cmds.cmd_end = NULL;	/* optional command terminator */
-  hms_cmds.target = &hms_ops;	/* target operations */
-  hms_cmds.stopbits = SERIAL_1_STOPBITS;	/* number of stop bits */
-  hms_cmds.regnames = hms_regnames;	/* registers names */
-  hms_cmds.magic = MONITOR_OPS_MAGIC;	/* magic */
-}				/* init_hms-cmds */
-
-static void
-hms_open (char *args, int from_tty)
-{
-  monitor_open (args, &hms_cmds, from_tty);
-}
-
-int write_dos_tick_delay;
-
-extern initialize_file_ftype _initialize_remote_hms; /* -Wmissing-prototypes */
-
-void
-_initialize_remote_hms (void)
-{
-  init_hms_cmds ();
-  init_monitor_ops (&hms_ops);
-
-  hms_ops.to_shortname = "hms";
-  hms_ops.to_longname = "Renesas Microsystems H8/300 debug monitor";
-  hms_ops.to_doc = "Debug via the HMS monitor.\n\
-Specify the serial device it is connected to (e.g. /dev/ttya).";
-  hms_ops.to_open = hms_open;
-  /* By trial and error I've found that this delay doesn't break things */
-  write_dos_tick_delay = 1;
-  add_target (&hms_ops);
-}
diff --git a/gdb/remote-utils.c b/gdb/remote-utils.c
deleted file mode 100644
index 4dd6626738f..00000000000
--- a/gdb/remote-utils.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/* Generic support for remote debugging interfaces.
-
-   Copyright (C) 1993, 1994, 1995, 1996, 1998, 2000, 2001, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/*  This file actually contains two distinct logical "packages".  They
-   are packaged together in this one file because they are typically
-   used together.
-
-   The first package is an addition to the serial package.  The
-   addition provides reading and writing with debugging output and
-   timeouts based on user settable variables.  These routines are
-   intended to support serial port based remote backends.  These
-   functions are prefixed with sr_.
-
-   The second package is a collection of more or less generic
-   functions for use by remote backends.  They support user settable
-   variables for debugging, retries, and the like.  
-
-   Todo:
-
-   * a pass through mode a la kermit or telnet.
-   * autobaud.
-   * ask remote to change his baud rate.
- */
-
-#include <ctype.h>
-
-#include "defs.h"
-#include "gdb_string.h"
-#include "gdbcmd.h"
-#include "target.h"
-#include "serial.h"
-#include "gdbcore.h"		/* for exec_bfd */
-#include "inferior.h"		/* for generic_mourn_inferior */
-#include "remote-utils.h"
-#include "regcache.h"
-
-
-void _initialize_sr_support (void);
-
-struct _sr_settings sr_settings =
-{
-  4,				/* timeout:
-				   remote-hms.c had 2
-				   remote-bug.c had "with a timeout of 2, we time out waiting for
-				   the prompt after an s-record dump."
-
-				   remote.c had (2): This was 5 seconds, which is a long time to
-				   sit and wait. Unless this is going though some terminal server
-				   or multiplexer or other form of hairy serial connection, I
-				   would think 2 seconds would be plenty.
-				 */
-
-  10,				/* retries */
-  NULL,				/* device */
-  NULL,				/* descriptor */
-};
-
-struct gr_settings *gr_settings = NULL;
-
-static void usage (char *, char *);
-static void sr_com (char *, int);
-
-static void
-usage (char *proto, char *junk)
-{
-  if (junk != NULL)
-    fprintf_unfiltered (gdb_stderr, "Unrecognized arguments: `%s'.\n", junk);
-
-  error (_("Usage: target %s [DEVICE [SPEED [DEBUG]]]\n\
-where DEVICE is the name of a device or HOST:PORT"), proto);
-
-  return;
-}
-
-#define CHECKDONE(p, q) \
-{ \
-  if (q == p) \
-    { \
-      if (*p == '\0') \
-	return; \
-      else \
-	usage(proto, p); \
-    } \
-}
-
-void
-sr_scan_args (char *proto, char *args)
-{
-  int n;
-  char *p, *q;
-
-  /* if no args, then nothing to do. */
-  if (args == NULL || *args == '\0')
-    return;
-
-  /* scan off white space.  */
-  for (p = args; isspace (*p); ++p);;
-
-  /* find end of device name.  */
-  for (q = p; *q != '\0' && !isspace (*q); ++q);;
-
-  /* check for missing or empty device name.  */
-  CHECKDONE (p, q);
-  sr_set_device (savestring (p, q - p));
-
-  /* look for baud rate.  */
-  n = strtol (q, &p, 10);
-
-  /* check for missing or empty baud rate.  */
-  CHECKDONE (p, q);
-  baud_rate = n;
-
-  /* look for debug value.  */
-  n = strtol (p, &q, 10);
-
-  /* check for missing or empty debug value.  */
-  CHECKDONE (p, q);
-  sr_set_debug (n);
-
-  /* scan off remaining white space.  */
-  for (p = q; isspace (*p); ++p);;
-
-  /* if not end of string, then there's unrecognized junk. */
-  if (*p != '\0')
-    usage (proto, p);
-
-  return;
-}
-
-void
-gr_generic_checkin (void)
-{
-  sr_write_cr ("");
-  gr_expect_prompt ();
-}
-
-void
-gr_open (char *args, int from_tty, struct gr_settings *gr)
-{
-  target_preopen (from_tty);
-  sr_scan_args (gr->ops->to_shortname, args);
-  unpush_target (gr->ops);
-
-  gr_settings = gr;
-
-  if (sr_get_desc () != NULL)
-    gr_close (0);
-
-  /* If no args are specified, then we use the device specified by a
-     previous command or "set remotedevice".  But if there is no
-     device, better stop now, not dump core.  */
-
-  if (sr_get_device () == NULL)
-    usage (gr->ops->to_shortname, NULL);
-
-  sr_set_desc (serial_open (sr_get_device ()));
-  if (!sr_get_desc ())
-    perror_with_name ((char *) sr_get_device ());
-
-  if (baud_rate != -1)
-    {
-      if (serial_setbaudrate (sr_get_desc (), baud_rate) != 0)
-	{
-	  serial_close (sr_get_desc ());
-	  perror_with_name (sr_get_device ());
-	}
-    }
-
-  serial_raw (sr_get_desc ());
-
-  /* If there is something sitting in the buffer we might take it as a
-     response to a command, which would be bad.  */
-  serial_flush_input (sr_get_desc ());
-
-  /* default retries */
-  if (sr_get_retries () == 0)
-    sr_set_retries (1);
-
-  /* default clear breakpoint function */
-  if (gr_settings->clear_all_breakpoints == NULL)
-    gr_settings->clear_all_breakpoints = remove_breakpoints;
-
-  if (from_tty)
-    {
-      printf_filtered ("Remote debugging using `%s'", sr_get_device ());
-      if (baud_rate != -1)
-	printf_filtered (" at baud rate of %d",
-			 baud_rate);
-      printf_filtered ("\n");
-    }
-
-  push_target (gr->ops);
-  gr_checkin ();
-  gr_clear_all_breakpoints ();
-  return;
-}
-
-/* Read a character from the remote system masking it down to 7 bits
-   and doing all the fancy timeout stuff.  */
-
-int
-sr_readchar (void)
-{
-  int buf;
-
-  buf = serial_readchar (sr_get_desc (), sr_get_timeout ());
-
-  if (buf == SERIAL_TIMEOUT)
-    error (_("Timeout reading from remote system."));
-
-  if (sr_get_debug () > 0)
-    printf_unfiltered ("%c", buf);
-
-  return buf & 0x7f;
-}
-
-int
-sr_pollchar (void)
-{
-  int buf;
-
-  buf = serial_readchar (sr_get_desc (), 0);
-  if (buf == SERIAL_TIMEOUT)
-    buf = 0;
-  if (sr_get_debug () > 0)
-    {
-      if (buf)
-	printf_unfiltered ("%c", buf);
-      else
-	printf_unfiltered ("<empty character poll>");
-    }
-
-  return buf & 0x7f;
-}
-
-/* Keep discarding input from the remote system, until STRING is found.
-   Let the user break out immediately.  */
-void
-sr_expect (char *string)
-{
-  char *p = string;
-
-  immediate_quit++;
-  while (1)
-    {
-      if (sr_readchar () == *p)
-	{
-	  p++;
-	  if (*p == '\0')
-	    {
-	      immediate_quit--;
-	      return;
-	    }
-	}
-      else
-	p = string;
-    }
-}
-
-void
-sr_write (char *a, int l)
-{
-  int i;
-
-  if (serial_write (sr_get_desc (), a, l) != 0)
-    perror_with_name (_("sr_write: Error writing to remote"));
-
-  if (sr_get_debug () > 0)
-    for (i = 0; i < l; i++)
-      printf_unfiltered ("%c", a[i]);
-
-  return;
-}
-
-void
-sr_write_cr (char *s)
-{
-  sr_write (s, strlen (s));
-  sr_write ("\r", 1);
-  return;
-}
-
-int
-sr_timed_read (char *buf, int n)
-{
-  int i;
-  char c;
-
-  i = 0;
-  while (i < n)
-    {
-      c = sr_readchar ();
-
-      if (c == 0)
-	return i;
-      buf[i] = c;
-      i++;
-
-    }
-  return i;
-}
-
-/* Get a hex digit from the remote system & return its value. If
-   ignore_space is nonzero, ignore spaces (not newline, tab, etc).  */
-
-int
-sr_get_hex_digit (int ignore_space)
-{
-  int ch;
-
-  while (1)
-    {
-      ch = sr_readchar ();
-      if (ch >= '0' && ch <= '9')
-	return ch - '0';
-      else if (ch >= 'A' && ch <= 'F')
-	return ch - 'A' + 10;
-      else if (ch >= 'a' && ch <= 'f')
-	return ch - 'a' + 10;
-      else if (ch != ' ' || !ignore_space)
-	{
-	  gr_expect_prompt ();
-	  error (_("Invalid hex digit from remote system."));
-	}
-    }
-}
-
-/* Get a byte from the remote and put it in *BYT.  Accept any number
-   leading spaces.  */
-void
-sr_get_hex_byte (char *byt)
-{
-  int val;
-
-  val = sr_get_hex_digit (1) << 4;
-  val |= sr_get_hex_digit (0);
-  *byt = val;
-}
-
-/* Read a 32-bit hex word from the remote, preceded by a space  */
-long
-sr_get_hex_word (void)
-{
-  long val;
-  int j;
-
-  val = 0;
-  for (j = 0; j < 8; j++)
-    val = (val << 4) + sr_get_hex_digit (j == 0);
-  return val;
-}
-
-/* Put a command string, in args, out to the remote.  The remote is assumed to
-   be in raw mode, all writing/reading done through desc.
-   Ouput from the remote is placed on the users terminal until the
-   prompt from the remote is seen.
-   FIXME: Can't handle commands that take input.  */
-
-static void
-sr_com (char *args, int fromtty)
-{
-  sr_check_open ();
-
-  if (!args)
-    return;
-
-  /* Clear all input so only command relative output is displayed */
-
-  sr_write_cr (args);
-  sr_write ("\030", 1);
-  registers_changed ();
-  gr_expect_prompt ();
-}
-
-void
-gr_close (int quitting)
-{
-  gr_clear_all_breakpoints ();
-
-  if (sr_is_open ())
-    {
-      serial_close (sr_get_desc ());
-      sr_set_desc (NULL);
-    }
-
-  return;
-}
-
-/* gr_detach()
-   takes a program previously attached to and detaches it.
-   We better not have left any breakpoints
-   in the program or it'll die when it hits one.
-   Close the open connection to the remote debugger.
-   Use this when you want to detach and do something else
-   with your gdb.  */
-
-void
-gr_detach (char *args, int from_tty)
-{
-  if (args)
-    error (_("Argument given to \"detach\" when remotely debugging."));
-
-  if (sr_is_open ())
-    gr_clear_all_breakpoints ();
-
-  pop_target ();
-  if (from_tty)
-    puts_filtered ("Ending remote debugging.\n");
-
-  return;
-}
-
-void
-gr_files_info (struct target_ops *ops)
-{
-#ifdef __GO32__
-  printf_filtered ("\tAttached to DOS asynctsr\n");
-#else
-  printf_filtered ("\tAttached to %s", sr_get_device ());
-  if (baud_rate != -1)
-    printf_filtered ("at %d baud", baud_rate);
-  printf_filtered ("\n");
-#endif
-
-  if (exec_bfd)
-    {
-      printf_filtered ("\tand running program %s\n",
-		       bfd_get_filename (exec_bfd));
-    }
-  printf_filtered ("\tusing the %s protocol.\n", ops->to_shortname);
-}
-
-void
-gr_mourn (void)
-{
-  gr_clear_all_breakpoints ();
-  unpush_target (gr_get_ops ());
-  generic_mourn_inferior ();
-}
-
-void
-gr_kill (void)
-{
-  return;
-}
-
-/* This is called not only when we first attach, but also when the
-   user types "run" after having attached.  */
-void
-gr_create_inferior (char *execfile, char *args, char **env)
-{
-  int entry_pt;
-
-  if (args && *args)
-    error (_("Can't pass arguments to remote process."));
-
-  if (execfile == 0 || exec_bfd == 0)
-    error (_("No executable file specified"));
-
-  entry_pt = (int) bfd_get_start_address (exec_bfd);
-  sr_check_open ();
-
-  gr_kill ();
-  gr_clear_all_breakpoints ();
-
-  init_wait_for_inferior ();
-  gr_checkin ();
-
-  insert_breakpoints ();	/* Needed to get correct instruction in cache */
-  proceed (entry_pt, -1, 0);
-}
-
-/* Given a null terminated list of strings LIST, read the input until we find one of
-   them.  Return the index of the string found or -1 on error.  '?' means match
-   any single character. Note that with the algorithm we use, the initial
-   character of the string cannot recur in the string, or we will not find some
-   cases of the string in the input.  If PASSTHROUGH is non-zero, then
-   pass non-matching data on.  */
-
-int
-gr_multi_scan (char *list[], int passthrough)
-{
-  char *swallowed = NULL;	/* holding area */
-  char *swallowed_p = swallowed;	/* Current position in swallowed.  */
-  int ch;
-  int ch_handled;
-  int i;
-  int string_count;
-  int max_length;
-  char **plist;
-
-  /* Look through the strings.  Count them.  Find the largest one so we can
-     allocate a holding area.  */
-
-  for (max_length = string_count = i = 0;
-       list[i] != NULL;
-       ++i, ++string_count)
-    {
-      int length = strlen (list[i]);
-
-      if (length > max_length)
-	max_length = length;
-    }
-
-  /* if we have no strings, then something is wrong. */
-  if (string_count == 0)
-    return (-1);
-
-  /* otherwise, we will need a holding area big enough to hold almost two
-     copies of our largest string.  */
-  swallowed_p = swallowed = alloca (max_length << 1);
-
-  /* and a list of pointers to current scan points. */
-  plist = (char **) alloca (string_count * sizeof (*plist));
-
-  /* and initialize */
-  for (i = 0; i < string_count; ++i)
-    plist[i] = list[i];
-
-  for (ch = sr_readchar (); /* loop forever */ ; ch = sr_readchar ())
-    {
-      QUIT;			/* Let user quit and leave process running */
-      ch_handled = 0;
-
-      for (i = 0; i < string_count; ++i)
-	{
-	  if (ch == *plist[i] || *plist[i] == '?')
-	    {
-	      ++plist[i];
-	      if (*plist[i] == '\0')
-		return (i);
-
-	      if (!ch_handled)
-		*swallowed_p++ = ch;
-
-	      ch_handled = 1;
-	    }
-	  else
-	    plist[i] = list[i];
-	}
-
-      if (!ch_handled)
-	{
-	  char *p;
-
-	  /* Print out any characters which have been swallowed.  */
-	  if (passthrough)
-	    {
-	      for (p = swallowed; p < swallowed_p; ++p)
-		fputc_unfiltered (*p, gdb_stdout);
-
-	      fputc_unfiltered (ch, gdb_stdout);
-	    }
-
-	  swallowed_p = swallowed;
-	}
-    }
-#if 0
-  /* Never reached.  */
-  return (-1);
-#endif
-}
-
-/* Get ready to modify the registers array.  On machines which store
-   individual registers, this doesn't need to do anything.  On machines
-   which store all the registers in one fell swoop, this makes sure
-   that registers contains all the registers from the program being
-   debugged.  */
-
-void
-gr_prepare_to_store (void)
-{
-  /* Do nothing, since we assume we can store individual regs */
-}
-
-void
-_initialize_sr_support (void)
-{
-  /* FIXME-now: if target is open... */
-  add_setshow_filename_cmd ("remotedevice", no_class, &sr_settings.device, _("\
-Set device for remote serial I/O."), _("\
-Show device for remote serial I/O."), _("\
-This device is used as the serial port when debugging using remote targets."),
-			    NULL,
-			    NULL, /* FIXME: i18n: */
-			    &setlist, &showlist);
-
-  add_com ("remote", class_obscure, sr_com,
-	   _("Send a command to the remote monitor."));
-
-}
diff --git a/gdb/remote-utils.h b/gdb/remote-utils.h
deleted file mode 100644
index 771ac71bb23..00000000000
--- a/gdb/remote-utils.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Generic support for remote debugging interfaces.
-
-   Copyright (C) 1993, 1994, 2000, 2001, 2007 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#ifndef REMOTE_UTILS_H
-#define REMOTE_UTILS_H
-
-struct target_ops;
-
-#include "target.h"
-struct serial;
-
-/* Stuff that should be shared (and handled consistently) among the various
-   remote targets.  */
-
-struct _sr_settings
-  {
-    unsigned int timeout;
-
-    int retries;
-
-    char *device;
-    struct serial *desc;
-
-  };
-
-extern struct _sr_settings sr_settings;
-
-/* get and set debug value. */
-#define sr_get_debug()			(remote_debug)
-#define sr_set_debug(newval)		(remote_debug = (newval))
-
-/* get and set timeout. */
-#define sr_get_timeout()		(sr_settings.timeout)
-#define sr_set_timeout(newval)		(sr_settings.timeout = (newval))
-
-/* get and set device. */
-#define sr_get_device()			(sr_settings.device)
-#define sr_set_device(newval) \
-{ \
-    if (sr_settings.device) xfree (sr_settings.device); \
-    sr_settings.device = (newval); \
-}
-
-/* get and set descriptor value. */
-#define sr_get_desc()			(sr_settings.desc)
-#define sr_set_desc(newval)		(sr_settings.desc = (newval))
-
-/* get and set retries. */
-#define sr_get_retries()		(sr_settings.retries)
-#define sr_set_retries(newval)		(sr_settings.retries = (newval))
-
-#define sr_is_open()			(sr_settings.desc != NULL)
-
-#define sr_check_open() 	{ if (!sr_is_open()) \
-				    error (_("Remote device not open")); }
-
-struct gr_settings
-  {
-    char *prompt;
-    struct target_ops *ops;
-    int (*clear_all_breakpoints) (void);
-    void (*checkin) (void);
-  };
-
-extern struct gr_settings *gr_settings;
-
-/* get and set prompt. */
-#define gr_get_prompt()			(gr_settings->prompt)
-#define gr_set_prompt(newval)		(gr_settings->prompt = (newval))
-
-/* get and set ops. */
-#define gr_get_ops()			(gr_settings->ops)
-#define gr_set_ops(newval)		(gr_settings->ops = (newval))
-
-#define gr_clear_all_breakpoints()	((gr_settings->clear_all_breakpoints)())
-#define gr_checkin()			((gr_settings->checkin)())
-
-/* Keep discarding input until we see the prompt.
-
-   The convention for dealing with the prompt is that you
-   o give your command
-   o *then* wait for the prompt.
-
-   Thus the last thing that a procedure does with the serial line
-   will be an gr_expect_prompt().  Exception:  resume does not
-   wait for the prompt, because the terminal is being handed over
-   to the inferior.  However, the next thing which happens after that
-   is a bug_wait which does wait for the prompt.
-   Note that this includes abnormal exit, e.g. error().  This is
-   necessary to prevent getting into states from which we can't
-   recover.  */
-
-#define gr_expect_prompt()	sr_expect(gr_get_prompt())
-
-int gr_multi_scan (char *list[], int passthrough);
-int sr_get_hex_digit (int ignore_space);
-int sr_pollchar (void);
-int sr_readchar (void);
-int sr_timed_read (char *buf, int n);
-long sr_get_hex_word (void);
-void gr_close (int quitting);
-void gr_create_inferior (char *execfile, char *args, char **env);
-void gr_detach (char *args, int from_tty);
-void gr_files_info (struct target_ops *ops);
-void gr_generic_checkin (void);
-void gr_kill (void);
-void gr_mourn (void);
-void gr_prepare_to_store (void);
-void sr_expect (char *string);
-void sr_get_hex_byte (char *byt);
-void sr_scan_args (char *proto, char *args);
-void sr_write (char *a, int l);
-void sr_write_cr (char *s);
-
-void gr_open (char *args, int from_tty, struct gr_settings *gr_settings);
-void gr_load_image (char *, int from_tty);
-#endif /* REMOTE_UTILS_H */
diff --git a/gdb/scm-exp.c b/gdb/scm-exp.c
deleted file mode 100644
index 0915048cfd6..00000000000
--- a/gdb/scm-exp.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/* Scheme/Guile language support routines for GDB, the GNU debugger.
-
-   Copyright (C) 1995, 1996, 2000, 2003, 2005, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "expression.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "value.h"
-#include "c-lang.h"
-#include "scm-lang.h"
-#include "scm-tags.h"
-
-#define USE_EXPRSTRING 0
-
-static void scm_lreadparen (int);
-static int scm_skip_ws (void);
-static void scm_read_token (int, int);
-static LONGEST scm_istring2number (char *, int, int);
-static LONGEST scm_istr2int (char *, int, int);
-static void scm_lreadr (int);
-
-static LONGEST
-scm_istr2int (char *str, int len, int radix)
-{
-  int i = 0;
-  LONGEST inum = 0;
-  int c;
-  int sign = 0;
-
-  if (0 >= len)
-    return SCM_BOOL_F;		/* zero scm_length */
-  switch (str[0])
-    {				/* leading sign */
-    case '-':
-    case '+':
-      sign = str[0];
-      if (++i == len)
-	return SCM_BOOL_F;	/* bad if lone `+' or `-' */
-    }
-  do
-    {
-      switch (c = str[i++])
-	{
-	case '0':
-	case '1':
-	case '2':
-	case '3':
-	case '4':
-	case '5':
-	case '6':
-	case '7':
-	case '8':
-	case '9':
-	  c = c - '0';
-	  goto accumulate;
-	case 'A':
-	case 'B':
-	case 'C':
-	case 'D':
-	case 'E':
-	case 'F':
-	  c = c - 'A' + 10;
-	  goto accumulate;
-	case 'a':
-	case 'b':
-	case 'c':
-	case 'd':
-	case 'e':
-	case 'f':
-	  c = c - 'a' + 10;
-	accumulate:
-	  if (c >= radix)
-	    return SCM_BOOL_F;	/* bad digit for radix */
-	  inum *= radix;
-	  inum += c;
-	  break;
-	default:
-	  return SCM_BOOL_F;	/* not a digit */
-	}
-    }
-  while (i < len);
-  if (sign == '-')
-    inum = -inum;
-  return SCM_MAKINUM (inum);
-}
-
-static LONGEST
-scm_istring2number (char *str, int len, int radix)
-{
-  int i = 0;
-  char ex = 0;
-  char ex_p = 0, rx_p = 0;	/* Only allow 1 exactness and 1 radix prefix */
-#if 0
-  SCM res;
-#endif
-  if (len == 1)
-    if (*str == '+' || *str == '-')	/* Catches lone `+' and `-' for speed */
-      return SCM_BOOL_F;
-
-  while ((len - i) >= 2 && str[i] == '#' && ++i)
-    switch (str[i++])
-      {
-      case 'b':
-      case 'B':
-	if (rx_p++)
-	  return SCM_BOOL_F;
-	radix = 2;
-	break;
-      case 'o':
-      case 'O':
-	if (rx_p++)
-	  return SCM_BOOL_F;
-	radix = 8;
-	break;
-      case 'd':
-      case 'D':
-	if (rx_p++)
-	  return SCM_BOOL_F;
-	radix = 10;
-	break;
-      case 'x':
-      case 'X':
-	if (rx_p++)
-	  return SCM_BOOL_F;
-	radix = 16;
-	break;
-      case 'i':
-      case 'I':
-	if (ex_p++)
-	  return SCM_BOOL_F;
-	ex = 2;
-	break;
-      case 'e':
-      case 'E':
-	if (ex_p++)
-	  return SCM_BOOL_F;
-	ex = 1;
-	break;
-      default:
-	return SCM_BOOL_F;
-      }
-
-  switch (ex)
-    {
-    case 1:
-      return scm_istr2int (&str[i], len - i, radix);
-    case 0:
-      return scm_istr2int (&str[i], len - i, radix);
-#if 0
-      if NFALSEP
-	(res) return res;
-#ifdef FLOATS
-    case 2:
-      return scm_istr2flo (&str[i], len - i, radix);
-#endif
-#endif
-    }
-  return SCM_BOOL_F;
-}
-
-static void
-scm_read_token (int c, int weird)
-{
-  while (1)
-    {
-      c = *lexptr++;
-      switch (c)
-	{
-	case '[':
-	case ']':
-	case '(':
-	case ')':
-	case '\"':
-	case ';':
-	case ' ':
-	case '\t':
-	case '\r':
-	case '\f':
-	case '\n':
-	  if (weird)
-	    goto default_case;
-	case '\0':		/* End of line */
-	eof_case:
-	  --lexptr;
-	  return;
-	case '\\':
-	  if (!weird)
-	    goto default_case;
-	  else
-	    {
-	      c = *lexptr++;
-	      if (c == '\0')
-		goto eof_case;
-	      else
-		goto default_case;
-	    }
-	case '}':
-	  if (!weird)
-	    goto default_case;
-
-	  c = *lexptr++;
-	  if (c == '#')
-	    return;
-	  else
-	    {
-	      --lexptr;
-	      c = '}';
-	      goto default_case;
-	    }
-
-	default:
-	default_case:
-	  ;
-	}
-    }
-}
-
-static int
-scm_skip_ws (void)
-{
-  int c;
-  while (1)
-    switch ((c = *lexptr++))
-      {
-      case '\0':
-      goteof:
-	return c;
-      case ';':
-      lp:
-	switch ((c = *lexptr++))
-	  {
-	  case '\0':
-	    goto goteof;
-	  default:
-	    goto lp;
-	  case '\n':
-	    break;
-	  }
-      case ' ':
-      case '\t':
-      case '\r':
-      case '\f':
-      case '\n':
-	break;
-      default:
-	return c;
-      }
-}
-
-static void
-scm_lreadparen (int skipping)
-{
-  for (;;)
-    {
-      int c = scm_skip_ws ();
-      if (')' == c || ']' == c)
-	return;
-      --lexptr;
-      if (c == '\0')
-	error ("missing close paren");
-      scm_lreadr (skipping);
-    }
-}
-
-static void
-scm_lreadr (int skipping)
-{
-  int c, j;
-  struct stoken str;
-  LONGEST svalue = 0;
-tryagain:
-  c = *lexptr++;
-  switch (c)
-    {
-    case '\0':
-      lexptr--;
-      return;
-    case '[':
-    case '(':
-      scm_lreadparen (skipping);
-      return;
-    case ']':
-    case ')':
-      error ("unexpected #\\%c", c);
-      goto tryagain;
-    case '\'':
-    case '`':
-      str.ptr = lexptr - 1;
-      scm_lreadr (skipping);
-      if (!skipping)
-	{
-	  struct value *val = scm_evaluate_string (str.ptr, lexptr - str.ptr);
-	  if (!is_scmvalue_type (value_type (val)))
-	    error ("quoted scm form yields non-SCM value");
-	  svalue = extract_signed_integer (value_contents (val),
-					   TYPE_LENGTH (value_type (val)));
-	  goto handle_immediate;
-	}
-      return;
-    case ',':
-      c = *lexptr++;
-      if ('@' != c)
-	lexptr--;
-      scm_lreadr (skipping);
-      return;
-    case '#':
-      c = *lexptr++;
-      switch (c)
-	{
-	case '[':
-	case '(':
-	  scm_lreadparen (skipping);
-	  return;
-	case 't':
-	case 'T':
-	  svalue = SCM_BOOL_T;
-	  goto handle_immediate;
-	case 'f':
-	case 'F':
-	  svalue = SCM_BOOL_F;
-	  goto handle_immediate;
-	case 'b':
-	case 'B':
-	case 'o':
-	case 'O':
-	case 'd':
-	case 'D':
-	case 'x':
-	case 'X':
-	case 'i':
-	case 'I':
-	case 'e':
-	case 'E':
-	  lexptr--;
-	  c = '#';
-	  goto num;
-	case '*':		/* bitvector */
-	  scm_read_token (c, 0);
-	  return;
-	case '{':
-	  scm_read_token (c, 1);
-	  return;
-	case '\\':		/* character */
-	  c = *lexptr++;
-	  scm_read_token (c, 0);
-	  return;
-	case '|':
-	  j = 1;		/* here j is the comment nesting depth */
-	lp:
-	  c = *lexptr++;
-	lpc:
-	  switch (c)
-	    {
-	    case '\0':
-	      error ("unbalanced comment");
-	    default:
-	      goto lp;
-	    case '|':
-	      if ('#' != (c = *lexptr++))
-		goto lpc;
-	      if (--j)
-		goto lp;
-	      break;
-	    case '#':
-	      if ('|' != (c = *lexptr++))
-		goto lpc;
-	      ++j;
-	      goto lp;
-	    }
-	  goto tryagain;
-	case '.':
-	default:
-#if 0
-	callshrp:
-#endif
-	  scm_lreadr (skipping);
-	  return;
-	}
-    case '\"':
-      while ('\"' != (c = *lexptr++))
-	{
-	  if (c == '\\')
-	    switch (c = *lexptr++)
-	      {
-	      case '\0':
-		error ("non-terminated string literal");
-	      case '\n':
-		continue;
-	      case '0':
-	      case 'f':
-	      case 'n':
-	      case 'r':
-	      case 't':
-	      case 'a':
-	      case 'v':
-		break;
-	      }
-	}
-      return;
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-    case '.':
-    case '-':
-    case '+':
-    num:
-      {
-	str.ptr = lexptr - 1;
-	scm_read_token (c, 0);
-	if (!skipping)
-	  {
-	    svalue = scm_istring2number (str.ptr, lexptr - str.ptr, 10);
-	    if (svalue != SCM_BOOL_F)
-	      goto handle_immediate;
-	    goto tok;
-	  }
-      }
-      return;
-    case ':':
-      scm_read_token ('-', 0);
-      return;
-#if 0
-    do_symbol:
-#endif
-    default:
-      str.ptr = lexptr - 1;
-      scm_read_token (c, 0);
-    tok:
-      if (!skipping)
-	{
-	  str.length = lexptr - str.ptr;
-	  if (str.ptr[0] == '$')
-	    {
-	      write_dollar_variable (str);
-	      return;
-	    }
-	  write_exp_elt_opcode (OP_NAME);
-	  write_exp_string (str);
-	  write_exp_elt_opcode (OP_NAME);
-	}
-      return;
-    }
-handle_immediate:
-  if (!skipping)
-    {
-      write_exp_elt_opcode (OP_LONG);
-      write_exp_elt_type (builtin_type_scm);
-      write_exp_elt_longcst (svalue);
-      write_exp_elt_opcode (OP_LONG);
-    }
-}
-
-int
-scm_parse (void)
-{
-  char *start;
-  while (*lexptr == ' ')
-    lexptr++;
-  start = lexptr;
-  scm_lreadr (USE_EXPRSTRING);
-#if USE_EXPRSTRING
-  str.length = lexptr - start;
-  str.ptr = start;
-  write_exp_elt_opcode (OP_EXPRSTRING);
-  write_exp_string (str);
-  write_exp_elt_opcode (OP_EXPRSTRING);
-#endif
-  return 0;
-}
diff --git a/gdb/scm-lang.c b/gdb/scm-lang.c
deleted file mode 100644
index 343a21e4463..00000000000
--- a/gdb/scm-lang.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* Scheme/Guile language support routines for GDB, the GNU debugger.
-
-   Copyright (C) 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "expression.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "value.h"
-#include "c-lang.h"
-#include "scm-lang.h"
-#include "scm-tags.h"
-#include "source.h"
-#include "gdb_string.h"
-#include "gdbcore.h"
-#include "infcall.h"
-
-extern void _initialize_scheme_language (void);
-static struct value *evaluate_subexp_scm (struct type *, struct expression *,
-				      int *, enum noside);
-static struct value *scm_lookup_name (char *);
-static int in_eval_c (void);
-
-struct type *builtin_type_scm;
-
-void
-scm_printchar (int c, struct ui_file *stream)
-{
-  fprintf_filtered (stream, "#\\%c", c);
-}
-
-static void
-scm_printstr (struct ui_file *stream, const gdb_byte *string,
-	      unsigned int length, int width, int force_ellipses)
-{
-  fprintf_filtered (stream, "\"%s\"", string);
-}
-
-int
-is_scmvalue_type (struct type *type)
-{
-  if (TYPE_CODE (type) == TYPE_CODE_INT
-      && TYPE_NAME (type) && strcmp (TYPE_NAME (type), "SCM") == 0)
-    {
-      return 1;
-    }
-  return 0;
-}
-
-/* Get the INDEX'th SCM value, assuming SVALUE is the address
-   of the 0'th one.  */
-
-LONGEST
-scm_get_field (LONGEST svalue, int index)
-{
-  gdb_byte buffer[20];
-  read_memory (SCM2PTR (svalue) + index * TYPE_LENGTH (builtin_type_scm),
-	       buffer, TYPE_LENGTH (builtin_type_scm));
-  return extract_signed_integer (buffer, TYPE_LENGTH (builtin_type_scm));
-}
-
-/* Unpack a value of type TYPE in buffer VALADDR as an integer
-   (if CONTEXT == TYPE_CODE_IN), a pointer (CONTEXT == TYPE_CODE_PTR),
-   or Boolean (CONTEXT == TYPE_CODE_BOOL).  */
-
-LONGEST
-scm_unpack (struct type *type, const gdb_byte *valaddr, enum type_code context)
-{
-  if (is_scmvalue_type (type))
-    {
-      LONGEST svalue = extract_signed_integer (valaddr, TYPE_LENGTH (type));
-      if (context == TYPE_CODE_BOOL)
-	{
-	  if (svalue == SCM_BOOL_F)
-	    return 0;
-	  else
-	    return 1;
-	}
-      switch (7 & (int) svalue)
-	{
-	case 2:
-	case 6:		/* fixnum */
-	  return svalue >> 2;
-	case 4:		/* other immediate value */
-	  if (SCM_ICHRP (svalue))	/* character */
-	    return SCM_ICHR (svalue);
-	  else if (SCM_IFLAGP (svalue))
-	    {
-	      switch ((int) svalue)
-		{
-#ifndef SICP
-		case SCM_EOL:
-#endif
-		case SCM_BOOL_F:
-		  return 0;
-		case SCM_BOOL_T:
-		  return 1;
-		}
-	    }
-	  error (_("Value can't be converted to integer."));
-	default:
-	  return svalue;
-	}
-    }
-  else
-    return unpack_long (type, valaddr);
-}
-
-/* True if we're correctly in Guile's eval.c (the evaluator and apply). */
-
-static int
-in_eval_c (void)
-{
-  struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-  
-  if (cursal.symtab && cursal.symtab->filename)
-    {
-      char *filename = cursal.symtab->filename;
-      int len = strlen (filename);
-      if (len >= 6 && strcmp (filename + len - 6, "eval.c") == 0)
-	return 1;
-    }
-  return 0;
-}
-
-/* Lookup a value for the variable named STR.
-   First lookup in Scheme context (using the scm_lookup_cstr inferior
-   function), then try lookup_symbol for compiled variables. */
-
-static struct value *
-scm_lookup_name (char *str)
-{
-  struct value *args[3];
-  int len = strlen (str);
-  struct value *func;
-  struct value *val;
-  struct symbol *sym;
-  args[0] = value_allocate_space_in_inferior (len);
-  args[1] = value_from_longest (builtin_type_int, len);
-  write_memory (value_as_long (args[0]), (gdb_byte *) str, len);
-
-  if (in_eval_c ()
-      && (sym = lookup_symbol ("env",
-			       expression_context_block,
-			       VAR_DOMAIN, (int *) NULL,
-			       (struct symtab **) NULL)) != NULL)
-    args[2] = value_of_variable (sym, expression_context_block);
-  else
-    /* FIXME in this case, we should try lookup_symbol first */
-    args[2] = value_from_longest (builtin_type_scm, SCM_EOL);
-
-  func = find_function_in_inferior ("scm_lookup_cstr");
-  val = call_function_by_hand (func, 3, args);
-  if (!value_logical_not (val))
-    return value_ind (val);
-
-  sym = lookup_symbol (str,
-		       expression_context_block,
-		       VAR_DOMAIN, (int *) NULL,
-		       (struct symtab **) NULL);
-  if (sym)
-    return value_of_variable (sym, NULL);
-  error (_("No symbol \"%s\" in current context."), str);
-}
-
-struct value *
-scm_evaluate_string (char *str, int len)
-{
-  struct value *func;
-  struct value *addr = value_allocate_space_in_inferior (len + 1);
-  LONGEST iaddr = value_as_long (addr);
-  write_memory (iaddr, (gdb_byte *) str, len);
-  /* FIXME - should find and pass env */
-  write_memory (iaddr + len, (gdb_byte *) "", 1);
-  func = find_function_in_inferior ("scm_evstr");
-  return call_function_by_hand (func, 1, &addr);
-}
-
-static struct value *
-evaluate_subexp_scm (struct type *expect_type, struct expression *exp,
-		     int *pos, enum noside noside)
-{
-  enum exp_opcode op = exp->elts[*pos].opcode;
-  int len, pc;
-  char *str;
-  switch (op)
-    {
-    case OP_NAME:
-      pc = (*pos)++;
-      len = longest_to_int (exp->elts[pc + 1].longconst);
-      (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
-      if (noside == EVAL_SKIP)
-	goto nosideret;
-      str = &exp->elts[pc + 2].string;
-      return scm_lookup_name (str);
-    case OP_EXPRSTRING:
-      pc = (*pos)++;
-      len = longest_to_int (exp->elts[pc + 1].longconst);
-      (*pos) += 3 + BYTES_TO_EXP_ELEM (len + 1);
-      if (noside == EVAL_SKIP)
-	goto nosideret;
-      str = &exp->elts[pc + 2].string;
-      return scm_evaluate_string (str, len);
-    default:;
-    }
-  return evaluate_subexp_standard (expect_type, exp, pos, noside);
-nosideret:
-  return value_from_longest (builtin_type_long, (LONGEST) 1);
-}
-
-const struct exp_descriptor exp_descriptor_scm = 
-{
-  print_subexp_standard,
-  operator_length_standard,
-  op_name_standard,
-  dump_subexp_body_standard,
-  evaluate_subexp_scm
-};
-
-const struct language_defn scm_language_defn =
-{
-  "scheme",			/* Language name */
-  language_scm,
-  NULL,
-  range_check_off,
-  type_check_off,
-  case_sensitive_off,
-  array_row_major,
-  &exp_descriptor_scm,
-  scm_parse,
-  c_error,
-  null_post_parser,
-  scm_printchar,		/* Print a character constant */
-  scm_printstr,			/* Function to print string constant */
-  NULL,				/* Function to print a single character */
-  NULL,				/* Create fundamental type in this language */
-  c_print_type,			/* Print a type using appropriate syntax */
-  scm_val_print,		/* Print a value using appropriate syntax */
-  scm_value_print,		/* Print a top-level value */
-  NULL,				/* Language specific skip_trampoline */
-  value_of_this,		/* value_of_this */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,				/* Language specific class_name_from_physname */
-  NULL,				/* expression operators for printing */
-  1,				/* c-style arrays */
-  0,				/* String lower bound */
-  NULL,
-  default_word_break_characters,
-  c_language_arch_info,
-  default_print_array_index,
-  LANG_MAGIC
-};
-
-void
-_initialize_scheme_language (void)
-{
-  add_language (&scm_language_defn);
-  builtin_type_scm = init_type (TYPE_CODE_INT,
-				TARGET_LONG_BIT / TARGET_CHAR_BIT,
-				0, "SCM", (struct objfile *) NULL);
-}
diff --git a/gdb/scm-lang.h b/gdb/scm-lang.h
deleted file mode 100644
index a9263b65224..00000000000
--- a/gdb/scm-lang.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Scheme/Guile language support routines for GDB, the GNU debugger.
-
-   Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#define SICP
-#include "scm-tags.h"
-#undef SCM_NCELLP
-#define SCM_NCELLP(x) 	((SCM_SIZE-1) & (int)(x))
-#define SCM_ITAG8_DATA(X)	((X)>>8)
-#define SCM_ICHR(x)	((unsigned char)SCM_ITAG8_DATA(x))
-#define SCM_ICHRP(x)    (SCM_ITAG8(x) == scm_tc8_char)
-#define scm_tc8_char 0xf4
-#define SCM_IFLAGP(n)            ((0x87 & (int)(n))==4)
-#define SCM_ISYMNUM(n)           ((int)((n)>>9))
-#define SCM_ISYMCHARS(n)         (scm_isymnames[SCM_ISYMNUM(n)])
-#define SCM_ILOCP(n)             ((0xff & (int)(n))==0xfc)
-#define SCM_ITAG8(X)             ((int)(X) & 0xff)
-#define SCM_TYP7(x)              (0x7f & (int)SCM_CAR(x))
-#define SCM_LENGTH(x) (((unsigned long)SCM_CAR(x))>>8)
-#define SCM_NCONSP(x) (1 & (int)SCM_CAR(x))
-#define SCM_NECONSP(x) (SCM_NCONSP(x) && (1 != SCM_TYP3(x)))
-#define SCM_CAR(x) scm_get_field (x, 0)
-#define SCM_CDR(x) scm_get_field (x, 1)
-#define SCM_VELTS(x) ((SCM *)SCM_CDR(x))
-#define SCM_CLOSCAR(x) (SCM_CAR(x)-scm_tc3_closure)
-#define SCM_CODE(x) SCM_CAR(SCM_CLOSCAR (x))
-#define SCM_MAKINUM(x) (((x)<<2)+2L)
-
-/* Forward decls for prototypes */
-struct value;
-
-extern int scm_value_print (struct value *, struct ui_file *,
-			    int, enum val_prettyprint);
-
-extern int scm_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
-			  struct ui_file *, int, int, int,
-			  enum val_prettyprint);
-
-extern LONGEST scm_get_field (LONGEST, int);
-
-extern void scm_scmval_print (LONGEST, struct ui_file *, int, int, int,
-			      enum val_prettyprint);
-
-extern int is_scmvalue_type (struct type *);
-
-extern void scm_printchar (int, struct ui_file *);
-
-extern struct value *scm_evaluate_string (char *, int);
-
-extern struct type *builtin_type_scm;
-
-extern int scm_parse (void);
-
-extern LONGEST scm_unpack (struct type *, const gdb_byte *, enum type_code);
diff --git a/gdb/scm-tags.h b/gdb/scm-tags.h
deleted file mode 100644
index 68927036a49..00000000000
--- a/gdb/scm-tags.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/* This is a minimally edited version of Guile's tags.h. */
-/* classes: h_files */
-
-#ifndef TAGSH
-#define TAGSH
-/*      Copyright (C) 1995, 1999, 2007 Free Software Foundation, Inc.
-
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * As a special exception, the Free Software Foundation gives permission
- * for additional uses of the text contained in its release of GUILE.
- *
- * The exception is that, if you link the GUILE library with other files
- * to produce an executable, this does not by itself cause the
- * resulting executable to be covered by the GNU General Public License.
- * Your use of that executable is in no way restricted on account of
- * linking the GUILE library code into it.
- *
- * This exception does not however invalidate any other reasons why
- * the executable file might be covered by the GNU General Public License.
- *
- * This exception applies only to the code released by the
- * Free Software Foundation under the name GUILE.  If you copy
- * code from other Free Software Foundation releases into a copy of
- * GUILE, as the General Public License permits, the exception does
- * not apply to the code that you add in this way.  To avoid misleading
- * anyone as to the status of such modified files, you must delete
- * this exception notice from them.
- *
- * If you write modifications of your own for GUILE, it is your choice
- * whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.  
- */
-
-
-/** This file defines the format of SCM values and cons pairs.  
- ** It is here that tag bits are assigned for various purposes.
- **/
-
-
-/* Three Bit Tags
-
- * 000 -- a non-immediate value.  Points into the pair heap.  
- *
- * 001 -- a gloc (i.e., a resolved global variable in a CAR in a code graph)
- *        or the CAR of an object handle (i.e., the tagged pointer to the
- *        vtable part of a user-defined object).
- *
- *        If X has this tag, the value at CDAR(X - 1) distinguishes
- *        glocs from object handles.  The distinction only needs
- *        to be made in a few places.  Only a few parts of the code know
- *        about glocs.  In most cases, when a value in the CAR of a pair
- *        has the tag 001, it means that the pair is an object handle.
- *
- * 010 -- the tag for immediate, exact integers. 
- *
- * 011 -- in the CAR of a pair, this tag indicates that the pair is a closure.
- *        The remaining bits of the CAR are a pointer into the pair heap
- *        to the code graph for the closure.
- *
- * 1xy -- an extension tag which means that there is a five or six bit
- *        tag to the left of the low three bits.  See the nice diagrams
- *        in ../doc/code.doc if you want to know what the bits mean.
- */
-
-
-
-
-
-#define scm_tc3_cons		0
-#define scm_tc3_cons_gloc	1
-#define scm_tc3_closure		3
-
-#define scm_tc7_ssymbol		5
-#define scm_tc7_msymbol		7
-#define scm_tc7_string		13
-#define scm_tc7_bvect		15
-#define scm_tc7_vector		21
-#define scm_tc7_lvector		23
-#define scm_tc7_ivect		29
-#define scm_tc7_uvect		31
-/* spare 37 39 */
-#define scm_tc7_fvect		45
-#define scm_tc7_dvect		47
-#define scm_tc7_cvect		53
-#define scm_tc7_port		55
-#define scm_tc7_contin		61
-#define scm_tc7_cclo		63
-/* spare 69 71 77 79 */
-#define scm_tc7_subr_0		85
-#define scm_tc7_subr_1		87
-#define scm_tc7_cxr		93
-#define scm_tc7_subr_3		95
-#define scm_tc7_subr_2		101
-#define scm_tc7_asubr		103
-#define scm_tc7_subr_1o		109
-#define scm_tc7_subr_2o		111
-#define scm_tc7_lsubr_2		117
-#define scm_tc7_lsubr		119
-#define scm_tc7_rpsubr		125
-
-#define scm_tc7_smob		127
-#define scm_tc_free_cell	127
-
-#define scm_tc16_flo		0x017f
-#define scm_tc_flo		0x017fL
-
-#define SCM_REAL_PART		(1L<<16)
-#define SCM_IMAG_PART		(2L<<16)
-#define scm_tc_dblr		(scm_tc16_flo|REAL_PART)
-#define scm_tc_dblc		(scm_tc16_flo|REAL_PART|IMAG_PART)
-
-#define scm_tc16_bigpos		0x027f
-#define scm_tc16_bigneg		0x037f
-
-#define scm_tc16_fport 		(scm_tc7_port + 0*256L)
-#define scm_tc16_pipe 		(scm_tc7_port + 1*256L)
-#define scm_tc16_strport	(scm_tc7_port + 2*256L)
-#define scm_tc16_sfport 	(scm_tc7_port + 3*256L)
-
-
-
-/* For cons pairs with immediate values in the CAR */
-#define scm_tcs_cons_imcar 2:case 4:case 6:case 10:\
- case 12:case 14:case 18:case 20:\
- case 22:case 26:case 28:case 30:\
- case 34:case 36:case 38:case 42:\
- case 44:case 46:case 50:case 52:\
- case 54:case 58:case 60:case 62:\
- case 66:case 68:case 70:case 74:\
- case 76:case 78:case 82:case 84:\
- case 86:case 90:case 92:case 94:\
- case 98:case 100:case 102:case 106:\
- case 108:case 110:case 114:case 116:\
- case 118:case 122:case 124:case 126
-
-/* For cons pairs with non-immediate values in the CAR */
-#define scm_tcs_cons_nimcar 0:case 8:case 16:case 24:\
- case 32:case 40:case 48:case 56:\
- case 64:case 72:case 80:case 88:\
- case 96:case 104:case 112:case 120
-
-/* A CONS_GLOC occurs in code.  It's CAR is a pointer to the
- * CDR of a variable.  The low order bits of the CAR are 001.
- * The CDR of the gloc is the code continuation.
- */
-#define scm_tcs_cons_gloc 1:case 9:case 17:case 25:\
- case 33:case 41:case 49:case 57:\
- case 65:case 73:case 81:case 89:\
- case 97:case 105:case 113:case 121
-
-#define scm_tcs_closures   3:case 11:case 19:case 27:\
- case 35:case 43:case 51:case 59:\
- case 67:case 75:case 83:case 91:\
- case 99:case 107:case 115:case 123
-
-#define scm_tcs_subrs scm_tc7_asubr:case scm_tc7_subr_0:case scm_tc7_subr_1:case scm_tc7_cxr:\
- case scm_tc7_subr_3:case scm_tc7_subr_2:case scm_tc7_rpsubr:case scm_tc7_subr_1o:\
- case scm_tc7_subr_2o:case scm_tc7_lsubr_2:case scm_tc7_lsubr
-
-#define scm_tcs_symbols scm_tc7_ssymbol:case scm_tc7_msymbol
-
-#define scm_tcs_bignums tc16_bigpos:case tc16_bigneg
-
-
-
-/* References to objects are of type SCM.  Values may be non-immediate
- * (pointers) or immediate (encoded, immutable, scalar values that fit
- * in an SCM variable).
- */
-
-typedef long SCM;
-
-/* Cray machines have pointers that are incremented once for each word,
- * rather than each byte, the 3 most significant bits encode the byte
- * within the word.  The following macros deal with this by storing the
- * native Cray pointers like the ones that looks like scm expects.  This
- * is done for any pointers that might appear in the car of a scm_cell, pointers
- * to scm_vector elts, functions, &c are not munged.
- */
-#ifdef _UNICOS
-#define SCM2PTR(x) ((int)(x) >> 3)
-#define PTR2SCM(x) (((SCM)(x)) << 3)
-#define SCM_POINTERS_MUNGED
-#else
-#define SCM2PTR(x) (x)
-#define PTR2SCM(x) ((SCM)(x))
-#endif /* def _UNICOS */
-
-
-
-/* Immediate? Predicates 
- */
-#define SCM_IMP(x) 	(6 & (int)(x))
-#define SCM_NIMP(x) 	(!SCM_IMP(x))
-
-
-
-enum scm_tags
-  {
-    scm_tc8_char = 0xf4
-  };
-
-#define SCM_ITAG8(X)		((int)(X) & 0xff)
-#define SCM_MAKE_ITAG8(X, TAG)	(((X)<<8) + TAG)
-#define SCM_ITAG8_DATA(X)	((X)>>8)
-
-
-
-/* Local Environment Structure
- */
-#define SCM_ILOCP(n)		((0xff & (int)(n))==0xfc)
-#define SCM_ILOC00		(0x000000fcL)
-#define SCM_IDINC		(0x00100000L)
-#define SCM_ICDR		(0x00080000L)
-#define SCM_IFRINC		(0x00000100L)
-#define SCM_IDSTMSK		(-SCM_IDINC)
-#define SCM_IFRAME(n) 		((int)((SCM_ICDR-SCM_IFRINC)>>8) & ((int)(n)>>8))
-#define SCM_IDIST(n) 		(((unsigned long)(n))>>20)
-#define SCM_ICDRP(n) 		(SCM_ICDR & (n))
-
-
-/* Immediate Symbols, Special Symbols, Flags (various constants).
- */
-
-/* ISYMP tests for ISPCSYM and ISYM */
-#define SCM_ISYMP(n) 		((0x187 & (int)(n))==4)
-
-/* IFLAGP tests for ISPCSYM, ISYM and IFLAG */
-#define SCM_IFLAGP(n) 		((0x87 & (int)(n))==4)
-#define SCM_ISYMNUM(n) 		((int)((n)>>9))
-#define SCM_ISYMCHARS(n) 	(scm_isymnames[SCM_ISYMNUM(n)])
-#define SCM_MAKSPCSYM(n) 	(((n)<<9)+((n)<<3)+4L)
-#define SCM_MAKISYM(n) 		(((n)<<9)+0x74L)
-#define SCM_MAKIFLAG(n) 	(((n)<<9)+0x174L)
-
-/* This table must agree with the declarations 
- * in repl.c: {Names of immediate symbols}.
- *
- * These are used only in eval but their values
- * have to be allocated here.
- *
- */
-
-#define SCM_IM_AND		SCM_MAKSPCSYM(0)
-#define SCM_IM_BEGIN		SCM_MAKSPCSYM(1)
-#define SCM_IM_CASE		SCM_MAKSPCSYM(2)
-#define SCM_IM_COND		SCM_MAKSPCSYM(3)
-#define SCM_IM_DO		SCM_MAKSPCSYM(4)
-#define SCM_IM_IF		SCM_MAKSPCSYM(5)
-#define SCM_IM_LAMBDA		SCM_MAKSPCSYM(6)
-#define SCM_IM_LET		SCM_MAKSPCSYM(7)
-#define SCM_IM_LETSTAR		SCM_MAKSPCSYM(8)
-#define SCM_IM_LETREC		SCM_MAKSPCSYM(9)
-#define SCM_IM_OR		SCM_MAKSPCSYM(10)
-#define SCM_IM_QUOTE		SCM_MAKSPCSYM(11)
-#define SCM_IM_SET		SCM_MAKSPCSYM(12)
-#define SCM_IM_DEFINE		SCM_MAKSPCSYM(13)
-#define SCM_IM_APPLY		SCM_MAKISYM(14)
-#define SCM_IM_CONT		SCM_MAKISYM(15)
-#define SCM_NUM_ISYMS 16
-
-/* Important immediates
- */
-
-#define SCM_BOOL_F		SCM_MAKIFLAG(SCM_NUM_ISYMS+0)
-#define SCM_BOOL_T 		SCM_MAKIFLAG(SCM_NUM_ISYMS+1)
-#define SCM_UNDEFINED	 	SCM_MAKIFLAG(SCM_NUM_ISYMS+2)
-#define SCM_EOF_VAL 		SCM_MAKIFLAG(SCM_NUM_ISYMS+3)
-
-#ifdef SICP
-#define SCM_EOL 		SCM_BOOL_F
-#else
-#define SCM_EOL			SCM_MAKIFLAG(SCM_NUM_ISYMS+4)
-#endif
-
-#define SCM_UNSPECIFIED		SCM_MAKIFLAG(SCM_NUM_ISYMS+5)
-
-
-
-/* Heap Pairs and the Empty List Predicates
- */
-#define SCM_NULLP(x) 	(SCM_EOL == (x))
-#define SCM_NNULLP(x) 	(SCM_EOL != (x))
-#define SCM_CELLP(x) 	(!SCM_NCELLP(x))
-#define SCM_NCELLP(x) 	((sizeof(scm_cell)-1) & (int)(x))
-
-
-
-#define SCM_UNBNDP(x) 	(SCM_UNDEFINED==(x))
-
-
-
-/* Testing and Changing GC Marks in Various Standard Positions
- */
-#define SCM_GCMARKP(x) 		(1 & (int)SCM_CDR(x))
-#define SCM_GC8MARKP(x) 	(0x80 & (int)SCM_CAR(x))
-#define SCM_SETGCMARK(x) 	(SCM_CDR(x) |= 1)
-#define SCM_CLRGCMARK(x) 	(SCM_CDR(x) &= ~1L)
-#define SCM_SETGC8MARK(x) 	(SCM_CAR(x) |= 0x80)
-#define SCM_CLRGC8MARK(x) 	(SCM_CAR(x) &= ~0x80L)
-
-
-/* Extracting Tag Bits, With or Without GC Safety and Optional Bits
- */
-#define SCM_TYP3(x) 		(7 & (int)SCM_CAR(x))
-#define SCM_TYP7(x) 		(0x7f & (int)SCM_CAR(x))
-#define SCM_TYP7S(x) 		(0x7d & (int)SCM_CAR(x))
-#define SCM_TYP16(x) 		(0xffff & (int)SCM_CAR(x))
-#define SCM_TYP16S(x) 		(0xfeff & (int)SCM_CAR(x))
-#define SCM_GCTYP16(x) 		(0xff7f & (int)SCM_CAR(x))
-
-
-/* Two slightly extensible types: smobs and ptobs.
-
- */
-#define SCM_SMOBNUM(x) (0x0ff & (CAR(x)>>8));
-#define SCM_PTOBNUM(x) (0x0ff & (CAR(x)>>8));
-
-
-
-
-#define SCM_DIRP(x) (SCM_NIMP(x) && (TYP16(x)==(scm_tc16_dir)))
-#define SCM_OPDIRP(x) (SCM_NIMP(x) && (CAR(x)==(scm_tc16_dir | OPN)))
-
-
-
-/* Lvectors 
- */
-#define SCM_LVECTORP(x) (TYP7(x)==tc7_lvector)
-
-
-#if 0
-
-/* Sockets 
- */
-#define tc_socket (tc7_port | OPN)
-#define SCM_SOCKP(x) (((0x7f | OPN | RDNG | WRTNG) & CAR(x))==(tc_socket))
-#define SCM_SOCKTYP(x) (CAR(x)>>24)
-
-
-
-extern int scm_tc16_key_vector;
-#define SCM_KEYVECP(X)   (scm_tc16_key_vector == TYP16 (X))
-#define SCM_KEYVECLEN(OBJ) (((unsigned long)CAR (obj)) >> 16)
-
-
-#define SCM_MALLOCDATA(obj) ((char *)CDR(obj))
-#define SCM_MALLOCLEN(obj) (((unsigned long)CAR (obj)) >> 16)
-#define SCM_WORDDATA(obj)  (CDR (obj))
-
-
-#define SCM_BYTECODEP(X) ((TYP7 (X) == tc7_cclo) && (CCLO_SUBR (X) == rb_proc))
-#define SCM_BYTECODE_CONSTANTS(X) (VELTS(X)[1])
-#define SCM_BYTECODE_CODE(X) (VELTS(X)[2])
-#define SCM_BYTECODE_NAME(X) (VELTS(X)[3])
-#define SCM_BYTECODE_BCODE(X) (VELTS(X)[4])
-#define SCM_BYTECODE_ELTS 5
-
-
-#define SCM_FREEP(x) (CAR(x)==tc_free_cell)
-#define SCM_NFREEP(x) (!FREEP(x))
-
-#endif /* 0 */
-
-
-#endif /* TAGSH */
diff --git a/gdb/scm-valprint.c b/gdb/scm-valprint.c
deleted file mode 100644
index aa16213c672..00000000000
--- a/gdb/scm-valprint.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/* Scheme/Guile language support routines for GDB, the GNU debugger.
-
-   Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2005, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "expression.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "value.h"
-#include "scm-lang.h"
-#include "valprint.h"
-#include "gdbcore.h"
-#include "c-lang.h"
-
-static void scm_ipruk (char *, LONGEST, struct ui_file *);
-static void scm_scmlist_print (LONGEST, struct ui_file *, int, int,
-			       int, enum val_prettyprint);
-static int scm_inferior_print (LONGEST, struct ui_file *, int, int,
-			       int, enum val_prettyprint);
-
-/* Prints the SCM value VALUE by invoking the inferior, if appropraite.
-   Returns >= 0 on succes;  retunr -1 if the inferior cannot/should not
-   print VALUE. */
-
-static int
-scm_inferior_print (LONGEST value, struct ui_file *stream, int format,
-		    int deref_ref, int recurse, enum val_prettyprint pretty)
-{
-  return -1;
-}
-
-/* {Names of immediate symbols}
- * This table must agree with the declarations in scm.h: {Immediate Symbols}.*/
-
-static char *scm_isymnames[] =
-{
-  /* This table must agree with the declarations */
-  "and",
-  "begin",
-  "case",
-  "cond",
-  "do",
-  "if",
-  "lambda",
-  "let",
-  "let*",
-  "letrec",
-  "or",
-  "quote",
-  "set!",
-  "define",
-#if 0
-  "literal-variable-ref",
-  "literal-variable-set!",
-#endif
-  "apply",
-  "call-with-current-continuation",
-
- /* user visible ISYMS */
- /* other keywords */
- /* Flags */
-
-  "#f",
-  "#t",
-  "#<undefined>",
-  "#<eof>",
-  "()",
-  "#<unspecified>"
-};
-
-static void
-scm_scmlist_print (LONGEST svalue, struct ui_file *stream, int format,
-		   int deref_ref, int recurse, enum val_prettyprint pretty)
-{
-  unsigned int more = print_max;
-  if (recurse > 6)
-    {
-      fputs_filtered ("...", stream);
-      return;
-    }
-  scm_scmval_print (SCM_CAR (svalue), stream, format,
-		    deref_ref, recurse + 1, pretty);
-  svalue = SCM_CDR (svalue);
-  for (; SCM_NIMP (svalue); svalue = SCM_CDR (svalue))
-    {
-      if (SCM_NECONSP (svalue))
-	break;
-      fputs_filtered (" ", stream);
-      if (--more == 0)
-	{
-	  fputs_filtered ("...", stream);
-	  return;
-	}
-      scm_scmval_print (SCM_CAR (svalue), stream, format,
-			deref_ref, recurse + 1, pretty);
-    }
-  if (SCM_NNULLP (svalue))
-    {
-      fputs_filtered (" . ", stream);
-      scm_scmval_print (svalue, stream, format,
-			deref_ref, recurse + 1, pretty);
-    }
-}
-
-static void
-scm_ipruk (char *hdr, LONGEST ptr, struct ui_file *stream)
-{
-  fprintf_filtered (stream, "#<unknown-%s", hdr);
-#define SCM_SIZE TYPE_LENGTH (builtin_type_scm)
-  if (SCM_CELLP (ptr))
-    fprintf_filtered (stream, " (0x%lx . 0x%lx) @",
-		      (long) SCM_CAR (ptr), (long) SCM_CDR (ptr));
-  fprintf_filtered (stream, " 0x%s>", paddr_nz (ptr));
-}
-
-void
-scm_scmval_print (LONGEST svalue, struct ui_file *stream, int format,
-		  int deref_ref, int recurse, enum val_prettyprint pretty)
-{
-taloop:
-  switch (7 & (int) svalue)
-    {
-    case 2:
-    case 6:
-      print_longest (stream, format ? format : 'd', 1, svalue >> 2);
-      break;
-    case 4:
-      if (SCM_ICHRP (svalue))
-	{
-	  svalue = SCM_ICHR (svalue);
-	  scm_printchar (svalue, stream);
-	  break;
-	}
-      else if (SCM_IFLAGP (svalue)
-	       && (SCM_ISYMNUM (svalue)
-		   < (sizeof scm_isymnames / sizeof (char *))))
-	{
-	  fputs_filtered (SCM_ISYMCHARS (svalue), stream);
-	  break;
-	}
-      else if (SCM_ILOCP (svalue))
-	{
-	  fprintf_filtered (stream, "#@%ld%c%ld",
-			    (long) SCM_IFRAME (svalue),
-			    SCM_ICDRP (svalue) ? '-' : '+',
-			    (long) SCM_IDIST (svalue));
-	  break;
-	}
-      else
-	goto idef;
-      break;
-    case 1:
-      /* gloc */
-      svalue = SCM_CAR (svalue - 1);
-      goto taloop;
-    default:
-    idef:
-      scm_ipruk ("immediate", svalue, stream);
-      break;
-    case 0:
-
-      switch (SCM_TYP7 (svalue))
-	{
-	case scm_tcs_cons_gloc:
-	  if (SCM_CDR (SCM_CAR (svalue) - 1L) == 0)
-	    {
-#if 0
-	      SCM name;
-#endif
-	      fputs_filtered ("#<latte ", stream);
-#if 1
-	      fputs_filtered ("???", stream);
-#else
-	      name = ((SCM n *) (STRUCT_TYPE (exp)))[struct_i_name];
-	      scm_lfwrite (CHARS (name),
-			   (sizet) sizeof (char),
-			     (sizet) LENGTH (name),
-			   port);
-#endif
-	      fprintf_filtered (stream, " #X%s>", paddr_nz (svalue));
-	      break;
-	    }
-	case scm_tcs_cons_imcar:
-	case scm_tcs_cons_nimcar:
-	  fputs_filtered ("(", stream);
-	  scm_scmlist_print (svalue, stream, format,
-			     deref_ref, recurse + 1, pretty);
-	  fputs_filtered (")", stream);
-	  break;
-	case scm_tcs_closures:
-	  fputs_filtered ("#<CLOSURE ", stream);
-	  scm_scmlist_print (SCM_CODE (svalue), stream, format,
-			     deref_ref, recurse + 1, pretty);
-	  fputs_filtered (">", stream);
-	  break;
-	case scm_tc7_string:
-	  {
-	    int len = SCM_LENGTH (svalue);
-	    CORE_ADDR addr = (CORE_ADDR) SCM_CDR (svalue);
-	    int i;
-	    int done = 0;
-	    int buf_size;
-	    gdb_byte buffer[64];
-	    int truncate = print_max && len > (int) print_max;
-	    if (truncate)
-	      len = print_max;
-	    fputs_filtered ("\"", stream);
-	    for (; done < len; done += buf_size)
-	      {
-		buf_size = min (len - done, 64);
-		read_memory (addr + done, buffer, buf_size);
-
-		for (i = 0; i < buf_size; ++i)
-		  switch (buffer[i])
-		    {
-		    case '\"':
-		    case '\\':
-		      fputs_filtered ("\\", stream);
-		    default:
-		      fprintf_filtered (stream, "%c", buffer[i]);
-		    }
-	      }
-	    fputs_filtered (truncate ? "...\"" : "\"", stream);
-	    break;
-	  }
-	  break;
-	case scm_tcs_symbols:
-	  {
-	    int len = SCM_LENGTH (svalue);
-
-	    char *str = alloca (len);
-	    read_memory (SCM_CDR (svalue), (gdb_byte *) str, len + 1);
-	    /* Should handle weird characters FIXME */
-	    str[len] = '\0';
-	    fputs_filtered (str, stream);
-	    break;
-	  }
-	case scm_tc7_vector:
-	  {
-	    int len = SCM_LENGTH (svalue);
-	    int i;
-	    LONGEST elements = SCM_CDR (svalue);
-	    fputs_filtered ("#(", stream);
-	    for (i = 0; i < len; ++i)
-	      {
-		if (i > 0)
-		  fputs_filtered (" ", stream);
-		scm_scmval_print (scm_get_field (elements, i), stream, format,
-				  deref_ref, recurse + 1, pretty);
-	      }
-	    fputs_filtered (")", stream);
-	  }
-	  break;
-#if 0
-	case tc7_lvector:
-	  {
-	    SCM result;
-	    SCM hook;
-	    hook = scm_get_lvector_hook (exp, LV_PRINT_FN);
-	    if (hook == BOOL_F)
-	      {
-		scm_puts ("#<locked-vector ", port);
-		scm_intprint (CDR (exp), 16, port);
-		scm_puts (">", port);
-	      }
-	    else
-	      {
-		result
-		  = scm_apply (hook,
-			       scm_listify (exp, port, 
-					    (writing ? BOOL_T : BOOL_F),
-					    SCM_UNDEFINED),
-			       EOL);
-		if (result == BOOL_F)
-		  goto punk;
-	      }
-	    break;
-	  }
-	  break;
-	case tc7_bvect:
-	case tc7_ivect:
-	case tc7_uvect:
-	case tc7_fvect:
-	case tc7_dvect:
-	case tc7_cvect:
-	  scm_raprin1 (exp, port, writing);
-	  break;
-#endif
-	case scm_tcs_subrs:
-	  {
-	    int index = SCM_CAR (svalue) >> 8;
-#if 1
-	    char str[20];
-	    sprintf (str, "#%d", index);
-#else
-	    char *str = index ? SCM_CHARS (scm_heap_org + index) : "";
-#define SCM_CHARS(x) ((char *)(SCM_CDR(x)))
-	    char *str = CHARS (SNAME (exp));
-#endif
-	    fprintf_filtered (stream, "#<primitive-procedure %s>",
-			      str);
-	  }
-	  break;
-#if 0
-#ifdef CCLO
-	case tc7_cclo:
-	  scm_puts ("#<compiled-closure ", port);
-	  scm_iprin1 (CCLO_SUBR (exp), port, writing);
-	  scm_putc ('>', port);
-	  break;
-#endif
-	case tc7_contin:
-	  fprintf_filtered (stream, "#<continuation %d @ #X%lx >",
-			    LENGTH (svalue),
-			    (long) CHARS (svalue));
-	  break;
-	case tc7_port:
-	  i = PTOBNUM (exp);
-	  if (i < scm_numptob 
-	      && scm_ptobs[i].print 
-	      && (scm_ptobs[i].print) (exp, port, writing))
-	    break;
-	  goto punk;
-	case tc7_smob:
-	  i = SMOBNUM (exp);
-	  if (i < scm_numsmob && scm_smobs[i].print
-	      && (scm_smobs[i].print) (exp, port, writing))
-	    break;
-	  goto punk;
-#endif
-	default:
-#if 0
-	punk:
-#endif
-	  scm_ipruk ("type", svalue, stream);
-	}
-      break;
-    }
-}
-
-int
-scm_val_print (struct type *type, const gdb_byte *valaddr,
-	       int embedded_offset, CORE_ADDR address,
-	       struct ui_file *stream, int format, int deref_ref,
-	       int recurse, enum val_prettyprint pretty)
-{
-  if (is_scmvalue_type (type))
-    {
-      LONGEST svalue = extract_signed_integer (valaddr, TYPE_LENGTH (type));
-      if (scm_inferior_print (svalue, stream, format,
-			      deref_ref, recurse, pretty) >= 0)
-	{
-	}
-      else
-	{
-	  scm_scmval_print (svalue, stream, format,
-			    deref_ref, recurse, pretty);
-	}
-
-      gdb_flush (stream);
-      return (0);
-    }
-  else
-    {
-      return c_val_print (type, valaddr, 0, address, stream, format,
-			  deref_ref, recurse, pretty);
-    }
-}
-
-int
-scm_value_print (struct value *val, struct ui_file *stream, int format,
-		 enum val_prettyprint pretty)
-{
-  return (common_val_print (val, stream, format, 1, 0, pretty));
-}
diff --git a/gdb/ser-e7kpc.c b/gdb/ser-e7kpc.c
deleted file mode 100644
index 4f96ff646c7..00000000000
--- a/gdb/ser-e7kpc.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/* Remote serial interface using Renesas E7000 PC ISA card in a PC
-   Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#if defined __GO32__ || defined _WIN32
-#include "serial.h"
-#include "gdb_string.h"
-
-#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#endif
-
-#ifdef __GO32__
-#include <sys/dos.h>
-#endif
-
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-
-static int e7000pc_open (struct serial *scb, const char *name);
-static void e7000pc_raw (struct serial *scb);
-static int e7000pc_readchar (struct serial *scb, int timeout);
-static int e7000pc_setbaudrate (struct serial *scb, int rate);
-static int e7000pc_write (struct serial *scb, const char *str, int len);
-static void e7000pc_close (struct serial *scb);
-static serial_ttystate e7000pc_get_tty_state (struct serial *scb);
-static int e7000pc_set_tty_state (struct serial *scb, serial_ttystate state);
-
-#define OFF_DPD 	0x0000
-#define OFF_DDP 	0x1000
-#define OFF_CPD 	0x2000
-#define OFF_CDP 	0x2400
-#define OFF_FA  	0x3000
-#define OFF_FB  	0x3002
-#define OFF_FC  	0x3004
-#define OFF_IRQTOD	0x3008
-#define OFF_IRQTOP 	0x300a
-#define OFF_READY  	0x300c
-#define OFF_PON    	0x300e
-
-#define IDLE       0x0000
-#define CMD_CI     0x4349
-#define CMD_CO     0x434f
-#define CMD_LO     0x4c4f
-#define CMD_LS     0x4c53
-#define CMD_SV     0x5356
-#define CMD_SS     0x5353
-#define CMD_OK     0x4f4b
-#define CMD_ER     0x4552
-#define CMD_NF     0x4e46
-#define CMD_AB     0x4142
-#define CMD_ED     0x4544
-#define CMD_CE     0x4345
-
-static unsigned long fa;
-static unsigned long irqtod;
-static unsigned long ready;
-static unsigned long fb;
-static unsigned long cpd;
-static unsigned long cdp;
-static unsigned long ready;
-static unsigned long pon;
-static unsigned long irqtop;
-static unsigned long board_at;
-
-#ifdef __GO32__
-
-#define SET_BYTE(x,y)   { char _buf = y;dosmemput(&_buf,1, x);}
-#define SET_WORD(x,y)   { short _buf = y;dosmemput(&_buf,2, x);}
-#define GET_BYTE(x)     ( dosmemget(x,1,&bb), bb)
-#define GET_WORD(x)     ( dosmemget(x,2,&sb), sb)
-static unsigned char bb;
-static unsigned short sb;
-
-#else /* win32 */
-
-#define SET_BYTE(x,y)   *(volatile unsigned char *)(x) = (y)
-#define SET_WORD(x,y)   *(volatile unsigned short *)(x) = (y)
-#define GET_BYTE(x)     (*(volatile unsigned char *)(x))
-#define GET_WORD(x)     (*(volatile unsigned short *)(x))
-#define dosmemget(FROM, LEN, TO) memcpy ((void *)(TO), (void *)(FROM), (LEN))
-#define dosmemput(FROM, LEN, TO) memcpy ((void *)(TO), (void *)(FROM), (LEN))
-#endif
-
-static struct sw
-  {
-    int sw;
-    int addr;
-  }
-sigs[] =
-{
-  {
-    0x14, 0xd0000
-  }
-  ,
-  {
-    0x15, 0xd4000
-  }
-  ,
-  {
-    0x16, 0xd8000
-  }
-  ,
-  {
-    0x17, 0xdc000
-  }
-  ,
-    0
-};
-
-#define get_ds_base() 0
-
-static int
-e7000pc_init (void)
-{
-  int try;
-  unsigned long dsbase;
-
-  dsbase = get_ds_base ();
-
-  /* Look around in memory for the board's signature */
-
-  for (try = 0; sigs[try].sw; try++)
-    {
-      int val;
-      board_at = sigs[try].addr - dsbase;
-      fa = board_at + OFF_FA;
-      fb = board_at + OFF_FB;
-      cpd = board_at + OFF_CPD;
-      cdp = board_at + OFF_CDP;
-      ready = board_at + OFF_READY;
-      pon = board_at + OFF_PON;
-      irqtop = board_at + OFF_IRQTOP;
-      irqtod = board_at + OFF_IRQTOD;
-
-      val = GET_WORD (ready);
-
-      if (val == (0xaaa0 | sigs[try].sw))
-	{
-	  if (GET_WORD (pon) & 0xf)
-	    {
-	      SET_WORD (fa, 0);
-	      SET_WORD (fb, 0);
-
-	      SET_WORD (irqtop, 1);	/* Disable interrupts from e7000 */
-	      SET_WORD (ready, 1);
-	      printf_filtered ("\nConnected to the E7000PC at address 0x%x\n",
-			       sigs[try].addr);
-	      return 1;
-	    }
-	  error (_("The E7000 PC board is working, but the E7000 is turned off."));
-	  return 0;
-	}
-    }
-
-  error (_("GDB cannot connect to the E7000 PC board, check that it is installed\n\
-and that the switch settings are correct.  Some other DOS programs can \n\
-stop the board from working.  Try starting from a very minimal boot, \n\
-perhaps you need to disable EMM386 over the region where the board has\n\
-its I/O space, remove other unneeded cards, etc etc\n"));
-  return 0;
-
-}
-
-static int pbuf_size;
-static int pbuf_index;
-
-/* Return next byte from cdp.  If no more, then return -1.  */
-
-static int
-e7000_get (void)
-{
-  static char pbuf[1000];
-  char tmp[1000];
-  int x;
-
-  if (pbuf_index < pbuf_size)
-    {
-      x = pbuf[pbuf_index++];
-    }
-  else if ((GET_WORD (fb) & 1))
-    {
-      int i;
-      pbuf_size = GET_WORD (cdp + 2);
-
-      dosmemget (cdp + 8, pbuf_size + 1, tmp);
-
-      /* Tell the E7000 we've eaten */
-      SET_WORD (fb, 0);
-      /* Swap it around */
-      for (i = 0; i < pbuf_size; i++)
-	{
-	  pbuf[i] = tmp[i ^ 1];
-	}
-      pbuf_index = 0;
-      x = pbuf[pbuf_index++];
-    }
-  else
-    {
-      x = -1;
-    }
-  return x;
-}
-
-/* Works just like read(), except that it takes a TIMEOUT in seconds.  Note
-   that TIMEOUT == 0 is a poll, and TIMEOUT == -1 means wait forever. */
-
-static int
-dosasync_read (int fd, char *buf, int len, int timeout)
-{
-  long now;
-  long then;
-  int i = 0;
-
-  /* Then look for some more if we're still hungry */
-  time (&now);
-  then = now + timeout;
-  while (i < len)
-    {
-      int ch = e7000_get ();
-
-      /* While there's room in the buffer, and we've already
-         read the stuff in, suck it over */
-      if (ch != -1)
-	{
-	  buf[i++] = ch;
-	  while (i < len && pbuf_index < pbuf_size)
-	    {
-	      ch = e7000_get ();
-	      if (ch == -1)
-		break;
-	      buf[i++] = ch;
-	    }
-	}
-
-      time (&now);
-
-      if (timeout == 0)
-	return i;
-      if (now >= then && timeout > 0)
-	{
-	  return i;
-	}
-    }
-  return len;
-}
-
-
-static int
-dosasync_write (int fd, const char *buf, int len)
-{
-  int i;
-  char dummy[1000];
-
-  /* Construct copy locally */
-  ((short *) dummy)[0] = CMD_CI;
-  ((short *) dummy)[1] = len;
-  ((short *) dummy)[2] = 0;
-  ((short *) dummy)[3] = 0;
-  for (i = 0; i < len; i++)
-    {
-      dummy[(8 + i) ^ 1] = buf[i];
-    }
-
-  /* Wait for the card to get ready */
-  while (GET_WORD (fa) & 1);
-
-  /* Blast onto the ISA card */
-  dosmemput (dummy, 8 + len + 1, cpd);
-
-  SET_WORD (fa, 1);
-  SET_WORD (irqtod, 1);		/* Interrupt the E7000 */
-
-  return len;
-}
-
-static int
-e7000pc_open (struct serial *scb, const char *name)
-{
-  if (strncasecmp (name, "pc", 2) != 0)
-    {
-      errno = ENOENT;
-      return -1;
-    }
-
-  scb->fd = e7000pc_init ();
-
-  if (!scb->fd)
-    return -1;
-
-  return 0;
-}
-
-static int
-e7000pc_noop (struct serial *scb)
-{
-  return 0;
-}
-
-static void
-e7000pc_raw (struct serial *scb)
-{
-  /* Always in raw mode */
-}
-
-static int
-e7000pc_readchar (struct serial *scb, int timeout)
-{
-  char buf;
-
-top:
-
-  if (dosasync_read (scb->fd, &buf, 1, timeout))
-    {
-      if (buf == 0)
-	goto top;
-      return buf;
-    }
-  else
-    return SERIAL_TIMEOUT;
-}
-
-struct e7000pc_ttystate
-{
-  int dummy;
-};
-
-/* e7000pc_{get set}_tty_state() are both dummys to fill out the function
-   vector.  Someday, they may do something real... */
-
-static serial_ttystate
-e7000pc_get_tty_state (struct serial *scb)
-{
-  struct e7000pc_ttystate *state;
-
-  state = (struct e7000pc_ttystate *) xmalloc (sizeof *state);
-
-  return (serial_ttystate) state;
-}
-
-static int
-e7000pc_set_tty_state (struct serial *scb, serial_ttystate ttystate)
-{
-  return 0;
-}
-
-static int
-e7000pc_noflush_set_tty_state (struct serial *scb,
-			       serial_ttystate new_ttystate,
-			       serial_ttystate old_ttystate)
-{
-  return 0;
-}
-
-static void
-e7000pc_print_tty_state (struct serial *scb,
-			 serial_ttystate ttystate,
-			 struct ui_file *stream)
-{
-  /* Nothing to print.  */
-  return;
-}
-
-static int
-e7000pc_setbaudrate (struct serial *scb, int rate)
-{
-  return 0;
-}
-
-static int
-e7000pc_setstopbits (struct serial *scb, int rate)
-{
-  return 0;
-}
-
-static int
-e7000pc_write (struct serial *scb, const char *str, int len)
-{
-  dosasync_write (scb->fd, str, len);
-
-  return 0;
-}
-
-static void
-e7000pc_close (struct serial *scb)
-{
-}
-
-static struct serial_ops e7000pc_ops =
-{
-  "pc",
-  0,
-  e7000pc_open,
-  e7000pc_close,
-  e7000pc_readchar,
-  e7000pc_write,
-  e7000pc_noop,			/* flush output */
-  e7000pc_noop,			/* flush input */
-  e7000pc_noop,			/* send break -- currently used only for nindy */
-  e7000pc_raw,
-  e7000pc_get_tty_state,
-  e7000pc_set_tty_state,
-  e7000pc_print_tty_state,
-  e7000pc_noflush_set_tty_state,
-  e7000pc_setbaudrate,
-  e7000pc_setstopbits,
-  e7000pc_noop,			/* wait for output to drain */
-};
-
-#endif /*_WIN32 or __GO32__*/
-
-extern initialize_file_ftype _initialize_ser_e7000pc; /* -Wmissing-prototypes */
-
-void
-_initialize_ser_e7000pc (void)
-{
-#if defined __GO32__ || defined _WIN32
-  serial_add_interface (&e7000pc_ops);
-#endif  
-}
diff --git a/gdb/sh3-rom.c b/gdb/sh3-rom.c
deleted file mode 100644
index f5a74251006..00000000000
--- a/gdb/sh3-rom.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/* Remote target glue for the Renesas SH-3 ROM monitor.
-   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2007
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "monitor.h"
-#include "serial.h"
-#include "srec.h"
-#include "arch-utils.h"
-#include "regcache.h"
-#include "gdb_string.h"
-
-#include "sh-tdep.h"
-
-static struct serial *parallel;
-static int parallel_in_use;
-
-static void sh3_open (char *args, int from_tty);
-
-static void
-sh3_supply_register (char *regname, int regnamelen, char *val, int vallen)
-{
-  int numregs;
-  int regno;
-
-  numregs = 1;
-  regno = -1;
-
-  if (regnamelen == 2)
-    {
-      switch (regname[0])
-	{
-	case 'S':
-	  if (regname[1] == 'R')
-	    regno = SR_REGNUM;
-	  break;
-	case 'P':
-	  if (regname[1] == 'C')
-	    regno = PC_REGNUM;
-	  else if (regname[1] == 'R')
-	    regno = PR_REGNUM;
-	  break;
-	}
-    }
-  else if (regnamelen == 3)
-    {
-      switch (regname[0])
-	{
-	case 'G':
-	case 'V':
-	  if (regname[1] == 'B' && regname[2] == 'R')
-	    {
-	      if (regname[0] == 'G')
-		regno = VBR_REGNUM;
-	      else
-		regno = GBR_REGNUM;
-	    }
-	  break;
-	case 'S':
-	  if (regname[1] == 'S' && regname[2] == 'R')
-	    regno = SSR_REGNUM;
-	  else if (regname[1] == 'P' && regname[2] == 'C')
-	    regno = SPC_REGNUM;
-	  break;
-	}
-    }
-  else if (regnamelen == 4)
-    {
-      switch (regname[0])
-	{
-	case 'M':
-	  if (regname[1] == 'A' && regname[2] == 'C')
-	    {
-	      if (regname[3] == 'H')
-		regno = MACH_REGNUM;
-	      else if (regname[3] == 'L')
-		regno = MACL_REGNUM;
-	    }
-	  break;
-	case 'R':
-	  if (regname[1] == '0' && regname[2] == '-' && regname[3] == '7')
-	    {
-	      regno = R0_REGNUM;
-	      numregs = 8;
-	    }
-	}
-    }
-  else if (regnamelen == 5)
-    {
-      if (regname[1] == '8' && regname[2] == '-' && regname[3] == '1'
-	  && regname[4] == '5')
-	{
-	  regno = R0_REGNUM + 8;
-	  numregs = 8;
-	}
-    }
-  else if (regnamelen == 17)
-    {
-    }
-
-  if (regno >= 0)
-    while (numregs-- > 0)
-      val = monitor_supply_register (regno++, val);
-}
-
-static void
-sh3_load (struct serial *desc, char *file, int hashmark)
-{
-  if (parallel_in_use)
-    {
-      monitor_printf ("pl;s\r");
-      load_srec (parallel, file, 0, 80, SREC_ALL, hashmark, NULL);
-      monitor_expect_prompt (NULL, 0);
-    }
-  else
-    {
-      monitor_printf ("il;s:x\r");
-      monitor_expect ("\005", NULL, 0);		/* Look for ENQ */
-      serial_write (desc, "\006", 1);	/* Send ACK */
-      monitor_expect ("LO x\r", NULL, 0);	/* Look for filename */
-
-      load_srec (desc, file, 0, 80, SREC_ALL, hashmark, NULL);
-
-      monitor_expect ("\005", NULL, 0);		/* Look for ENQ */
-      serial_write (desc, "\006", 1);	/* Send ACK */
-      monitor_expect_prompt (NULL, 0);
-    }
-}
-
-/* This array of registers need to match the indexes used by GDB.
-   This exists because the various ROM monitors use different strings
-   than does GDB, and don't necessarily support all the registers
-   either. So, typing "info reg sp" becomes a "r30".  */
-
-static char *sh3_regnames[] =
-{
-  "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7",
-  "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15",
-  "PC", "PR", "GBR", "VBR", "MACH", "MACL", "SR",
-  NULL, NULL,
-  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-  "SSR", "SPC",
-  "R0_BANK0", "R1_BANK0", "R2_BANK0", "R3_BANK0",
-  "R4_BANK0", "R5_BANK0", "R6_BANK0", "R7_BANK0",
-  "R0_BANK1", "R1_BANK1", "R2_BANK1", "R3_BANK1",
-  "R4_BANK1", "R5_BANK1", "R6_BANK1", "R7_BANK1"
-};
-
-static char *sh3e_regnames[] =
-{
-  "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7",
-  "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15",
-  "PC", "PR", "GBR", "VBR", "MACH", "MACL", "SR",
-  "FPUL", "FPSCR",
-  "FR0", "FR1", "FR2", "FR3", "FR4", "FR5", "FR6", "FR7",
-  "FR8", "FR9", "FR10", "FR11", "FR12", "FR13", "FR14", "FR15",
-  "SSR", "SPC",
-  "R0_BANK0", "R1_BANK0", "R2_BANK0", "R3_BANK0",
-  "R4_BANK0", "R5_BANK0", "R6_BANK0", "R7_BANK0",
-  "R0_BANK1", "R1_BANK1", "R2_BANK1", "R3_BANK1",
-  "R4_BANK1", "R5_BANK1", "R6_BANK1", "R7_BANK1"
-};
-
-/* Define the monitor command strings. Since these are passed directly
-   through to a printf style function, we may include formatting
-   strings. We also need a CR or LF on the end.  */
-
-static struct target_ops sh3_ops, sh3e_ops;
-
-static char *sh3_inits[] =
-{"\003", NULL};			/* Exits sub-command mode & download cmds */
-
-static struct monitor_ops sh3_cmds;
-
-static void
-init_sh3_cmds (void)
-{
-  sh3_cmds.flags = MO_CLR_BREAK_USES_ADDR | MO_GETMEM_READ_SINGLE;	/* flags */
-  sh3_cmds.init = sh3_inits;	/* monitor init string */
-  sh3_cmds.cont = "g\r";	/* continue command */
-  sh3_cmds.step = "s\r";	/* single step */
-  sh3_cmds.stop = "\003";	/* Interrupt program */
-  sh3_cmds.set_break = "b %x\r";	/* set a breakpoint */
-  sh3_cmds.clr_break = "b -%x\r";	/* clear a breakpoint */
-  sh3_cmds.clr_all_break = "b -\r";	/* clear all breakpoints */
-  sh3_cmds.fill = "f %x @%x %x\r";	/* fill (start len val) */
-  sh3_cmds.setmem.cmdb = "m %x %x\r";	/* setmem.cmdb (addr, value) */
-  sh3_cmds.setmem.cmdw = "m %x %x;w\r";		/* setmem.cmdw (addr, value) */
-  sh3_cmds.setmem.cmdl = "m %x %x;l\r";		/* setmem.cmdl (addr, value) */
-  sh3_cmds.setmem.cmdll = NULL;	/* setmem.cmdll (addr, value) */
-  sh3_cmds.setmem.resp_delim = NULL;	/* setreg.resp_delim */
-  sh3_cmds.setmem.term = NULL;	/* setreg.term */
-  sh3_cmds.setmem.term_cmd = NULL;	/* setreg.term_cmd */
-  sh3_cmds.getmem.cmdb = "m %x\r";	/* getmem.cmdb (addr, len) */
-  sh3_cmds.getmem.cmdw = "m %x;w\r";	/* getmem.cmdw (addr, len) */
-  sh3_cmds.getmem.cmdl = "m %x;l\r";	/* getmem.cmdl (addr, len) */
-  sh3_cmds.getmem.cmdll = NULL;	/* getmem.cmdll (addr, len) */
-  sh3_cmds.getmem.resp_delim = "^ [0-9A-F]+ ";	/* getmem.resp_delim */
-  sh3_cmds.getmem.term = "? ";	/* getmem.term */
-  sh3_cmds.getmem.term_cmd = ".\r";	/* getmem.term_cmd */
-  sh3_cmds.setreg.cmd = ".%s %x\r";	/* setreg.cmd (name, value) */
-  sh3_cmds.setreg.resp_delim = NULL;	/* setreg.resp_delim */
-  sh3_cmds.setreg.term = NULL;	/* setreg.term */
-  sh3_cmds.setreg.term_cmd = NULL;	/* setreg.term_cmd */
-  sh3_cmds.getreg.cmd = ".%s\r";	/* getreg.cmd (name) */
-  sh3_cmds.getreg.resp_delim = "=";	/* getreg.resp_delim */
-  sh3_cmds.getreg.term = "? ";	/* getreg.term */
-  sh3_cmds.getreg.term_cmd = ".\r";	/* getreg.term_cmd */
-  sh3_cmds.dump_registers = "r\r";	/* dump_registers */
-  sh3_cmds.register_pattern = "\\(\\w+\\)=\\([0-9a-fA-F]+\\( +[0-9a-fA-F]+\\b\\)*\\)";
-  sh3_cmds.supply_register = sh3_supply_register;
-  sh3_cmds.load_routine = sh3_load;	/* load_routine */
-  sh3_cmds.load = NULL;		/* download command */
-  sh3_cmds.loadresp = NULL;	/* Load response */
-  sh3_cmds.prompt = "\n:";	/* monitor command prompt */
-  sh3_cmds.line_term = "\r";	/* end-of-line terminator */
-  sh3_cmds.cmd_end = ".\r";	/* optional command terminator */
-  sh3_cmds.target = &sh3_ops;	/* target operations */
-  sh3_cmds.stopbits = SERIAL_1_STOPBITS;	/* number of stop bits */
-  sh3_cmds.regnames = sh3_regnames;	/* registers names */
-  sh3_cmds.magic = MONITOR_OPS_MAGIC;	/* magic */
-}				/* init_sh3_cmds */
-
-/* This monitor structure is identical except for a couple slots, so
-   we will fill it in from the base structure when needed.  */
-
-static struct monitor_ops sh3e_cmds;
-
-static void
-sh3_open (char *args, int from_tty)
-{
-  char *serial_port_name = args;
-  char *parallel_port_name = 0;
-
-  if (args)
-    {
-      char *cursor = serial_port_name = xstrdup (args);
-
-      while (*cursor && *cursor != ' ')
-	cursor++;
-
-      if (*cursor)
-	*cursor++ = 0;
-
-      while (*cursor == ' ')
-	cursor++;
-
-      if (*cursor)
-	parallel_port_name = cursor;
-    }
-
-  monitor_open (serial_port_name, &sh3_cmds, from_tty);
-
-  if (parallel_port_name)
-    {
-      parallel = serial_open (parallel_port_name);
-
-      if (!parallel)
-	perror_with_name (_("Unable to open parallel port."));
-
-      parallel_in_use = 1;
-    }
-
-
-  /* If we connected successfully, we know the processor is an SH3.  */
-  {
-    struct gdbarch_info info;
-    gdbarch_info_init (&info);
-    info.bfd_arch_info = bfd_lookup_arch (bfd_arch_sh, bfd_mach_sh3);
-    if (!gdbarch_update_p (info))
-      error (_("Target is not an SH3"));
-  }
-}
-
-
-static void
-sh3e_open (char *args, int from_tty)
-{
-  char *serial_port_name = args;
-  char *parallel_port_name = 0;
-
-  if (args)
-    {
-      char *cursor = serial_port_name = xstrdup (args);
-
-      while (*cursor && *cursor != ' ')
-	cursor++;
-
-      if (*cursor)
-	*cursor++ = 0;
-
-      while (*cursor == ' ')
-	cursor++;
-
-      if (*cursor)
-	parallel_port_name = cursor;
-    }
-
-  /* Set up the SH-3E monitor commands structure.  */
-
-  memcpy (&sh3e_cmds, &sh3_cmds, sizeof (struct monitor_ops));
-
-  sh3e_cmds.target = &sh3e_ops;
-  sh3e_cmds.regnames = sh3e_regnames;
-
-  monitor_open (serial_port_name, &sh3e_cmds, from_tty);
-
-  if (parallel_port_name)
-    {
-      parallel = serial_open (parallel_port_name);
-
-      if (!parallel)
-	perror_with_name (_("Unable to open parallel port."));
-
-      parallel_in_use = 1;
-    }
-
-  /* If we connected successfully, we know the processor is an SH3E.  */
-  {
-    struct gdbarch_info info;
-    gdbarch_info_init (&info);
-    info.bfd_arch_info = bfd_lookup_arch (bfd_arch_sh, bfd_mach_sh3);
-    if (!gdbarch_update_p (info))
-      error (_("Target is not an SH3"));
-  }
-}
-
-static void
-sh3_close (int quitting)
-{
-  monitor_close (quitting);
-  if (parallel_in_use)
-    {
-      serial_close (parallel);
-      parallel_in_use = 0;
-    }
-}
-
-extern initialize_file_ftype _initialize_sh3_rom; /* -Wmissing-prototypes */
-
-void
-_initialize_sh3_rom (void)
-{
-  init_sh3_cmds ();
-  init_monitor_ops (&sh3_ops);
-
-  sh3_ops.to_shortname = "sh3";
-  sh3_ops.to_longname = "Renesas SH-3 rom monitor";
-
-  sh3_ops.to_doc =
-  /* We can download through the parallel port too. */
-    "Debug on a Renesas eval board running the SH-3E rom monitor.\n"
-    "Specify the serial device it is connected to.\n"
-    "If you want to use the parallel port to download to it, specify that\n"
-    "as an additional second argument.";
-
-  sh3_ops.to_open = sh3_open;
-  sh3_ops.to_close = sh3_close;
-
-  add_target (&sh3_ops);
-
-  /* Setup the SH3e, which has float registers.  */
-
-  init_monitor_ops (&sh3e_ops);
-
-  sh3e_ops.to_shortname = "sh3e";
-  sh3e_ops.to_longname = "Renesas SH-3E rom monitor";
-
-  sh3e_ops.to_doc =
-  /* We can download through the parallel port too. */
-    "Debug on a Renesas eval board running the SH-3E rom monitor.\n"
-    "Specify the serial device it is connected to.\n"
-    "If you want to use the parallel port to download to it, specify that\n"
-    "as an additional second argument.";
-
-  sh3e_ops.to_open = sh3e_open;
-  sh3e_ops.to_close = sh3_close;
-
-  add_target (&sh3e_ops);
-}
diff --git a/gdb/stop-gdb.c b/gdb/stop-gdb.c
deleted file mode 100644
index dd788edea08..00000000000
--- a/gdb/stop-gdb.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* A client to make GDB return to command level in Mach 3.
-   Copyright (C) 1992, 1993, 1994, 2000, 2007 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* Authors: Jukka Virtanen <jtv@hut.fi> and Peter Stout <pds@cs.cmu.edu>.
-
-   A simple client to make GDB (versions 4.4 and later) on Mach 3 return
-   to the command level when it is waiting for the inferior to stop.
-
-   Actions: Lookup the send right to the GDB message port from the
-   NetMsgServer.
-
-   Send an asynchronous message with msgh_id
-   GDB_MESSAGE_ID_STOP to that port.
- */
-
-#include <stdio.h>
-
-#include "defs.h"
-
-#include <mach.h>
-#include <mach/message.h>
-#include <mach_error.h>
-#include <servers/netname.h>
-#include <servers/netname_defs.h>
-
-void
-main (int argc, char **argv)
-{
-  kern_return_t kr;
-  mach_msg_header_t msg;
-  mach_port_t gdb_port;
-  char *host;
-  char *name;
-
-  if (argc == 1)
-    argv[argc++] = GDB_DEF_NAME;
-
-  if (argc != 2)
-    {
-      fprintf (stderr, "Usage : %s <GDB name>\n", argv[0]);
-      exit (1);
-    }
-
-  /* Allow the user to specify a remote host.  */
-  host = strchr (argv[1], '@');
-  if (host)
-    *(host++) = '\0';
-  else
-    host = (char *) "";
-
-  name = malloc (strlen (argv[1]) + sizeof (GDB_NAME_PREFIX));
-  if (name == NULL)
-    {
-      fprintf (stderr, "Unable to allocate memory for name.");
-      exit (1);
-    }
-
-  strcpy (name, GDB_NAME_PREFIX);
-  strcat (name, argv[1]);
-
-  /* Look up the GDB service port.  For convenience, add the
-     GDB_NAME_PREFIX the argument before looking up the name.
-     For backwards compatibility, do it without.  */
-
-  kr = netname_look_up (name_server_port, host, name, &gdb_port);
-  if (kr == NETNAME_NOT_CHECKED_IN)
-    kr = netname_look_up (name_server_port, host, argv[1], &gdb_port);
-  if (kr != KERN_SUCCESS)
-    {
-      fprintf (stderr, "Unable to lookup the GDB service port: %s.\n",
-	       mach_error_string (kr));
-      exit (1);
-    }
-
-  /* Code generated by mig stub generator, with minor cleanups :-)
-
-     simpleroutine stop_inferior(gdb_port : mach_port_t);  */
-
-  msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_COPY_SEND, 0);
-  msg.msgh_remote_port = gdb_port;
-  msg.msgh_local_port = MACH_PORT_NULL;
-  msg.msgh_size = sizeof (msg);
-  msg.msgh_seqno = 0;
-  msg.msgh_id = GDB_MESSAGE_ID_STOP;
-
-  kr = mach_msg_send (&msg);
-  if (kr != KERN_SUCCESS)
-    fprintf (stderr, "Message not sent, return code %d : %s\n", kr,
-	     mach_error_string (kr));
-
-  exit (kr != KERN_SUCCESS);
-}