* dlltool.c (add_stdcall_underscore): New flag.
[deliverable/binutils-gdb.git] / gdb / remote-est.c
index 83866591ebf25d778cba4af39c89c85c127b176a..350eaa4aac5fcfaff4ebd25b3d14b27136782142 100644 (file)
@@ -1,5 +1,6 @@
 /* Remote debugging interface for EST-300 ICE, for GDB
-   Copyright 1994 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
    Written by Steve Chamberlain for Cygnus Support.
 
    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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   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"
 
-static void est_open PARAMS ((char *args, int from_tty));
+#include "m68k-tdep.h"
+
+static void est_open (char *args, int from_tty);
 
 static void
-est_supply_register (regname, regnamelen, val, vallen)
-     char *regname;
-     int regnamelen;
-     char *val;
-     int vallen;
+est_supply_register (char *regname, int regnamelen, char *val, int vallen)
 {
   int regno;
 
@@ -56,12 +57,12 @@ est_supply_register (regname, regnamelen, val, vallen)
     case 'D':
       if (regname[1] < '0' || regname[1] > '7')
        return;
-      regno = regname[1] - '0' + D0_REGNUM;
+      regno = regname[1] - '0' + M68K_D0_REGNUM;
       break;
     case 'A':
       if (regname[1] < '0' || regname[1] > '7')
        return;
-      regno = regname[1] - '0' + A0_REGNUM;
+      regno = regname[1] - '0' + M68K_A0_REGNUM;
       break;
     default:
       return;
@@ -77,12 +78,24 @@ est_supply_register (regname, regnamelen, val, vallen)
  * registers either. So, typing "info reg sp" becomes a "r30".
  */
 
-static char *est_regnames[NUM_REGS] =
+static const char *
+est_regname (int index) 
 {
-  "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7",
-  "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7",
-  "SR", "PC",
-};
+  
+  static char *regnames[] =
+  {
+    "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7",
+    "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7",
+    "SR", "PC",
+  };
+  
+
+  if ((index >= (sizeof (regnames) /  sizeof (regnames[0]))) 
+       || (index < 0) || (index >= NUM_REGS))
+    return NULL;
+  else
+    return regnames[index];
+}
 
 /*
  * Define the monitor command strings. Since these are passed directly
@@ -92,81 +105,75 @@ static char *est_regnames[NUM_REGS] =
 
 static struct target_ops est_ops;
 
-static char *est_loadtypes[] = {"srec", NULL};
-static char *est_loadprotos[] = {"none", NULL};
+static char *est_inits[] =
+{"he\r",                       /* Resets the prompt, and clears repeated cmds */
+ NULL};
 
-static char *est_inits[] = {"he\r", /* Resets the prompt, and clears repeated cmds */
-                             NULL};
+static struct monitor_ops est_cmds;
 
-static struct monitor_ops est_cmds =
+static void
+init_est_cmds (void)
 {
-  MO_CLR_BREAK_USES_ADDR | MO_FILL_USES_ADDR | MO_NEED_REGDUMP_AFTER_CONT,
-  est_inits,                   /* Init strings */
-  "go\r",                      /* continue command */
-  "sidr\r",                    /* single step */
-  "\003",                      /* ^C interrupts the program */
-  "sb %x\r",                   /* set a breakpoint */
-  "rb %x\r",                   /* clear a breakpoint */
-  "rb\r",                      /* clear all breakpoints */
-  "bfb %x %x %x\r",            /* fill (start end val) */
-  {
-    "smb %x %x\r",             /* setmem.cmdb (addr, value) */
-    "smw %x %x\r",             /* setmem.cmdw (addr, value) */
-    "sml %x %x\r",             /* setmem.cmdl (addr, value) */
-    NULL,                      /* setmem.cmdll (addr, value) */
-    NULL,                      /* setreg.resp_delim */
-    NULL,                      /* setreg.term */
-    NULL,                      /* setreg.term_cmd */
-  },
-  {
-    "dmb %x %x\r",             /* getmem.cmdb (addr, len) */
-    "dmw %x %x\r",             /* getmem.cmdw (addr, len) */
-    "dml %x %x\r",             /* getmem.cmdl (addr, len) */
-    NULL,                      /* getmem.cmdll (addr, len) */
-    ": ",                      /* getmem.resp_delim */
-    NULL,                      /* getmem.term */
-    NULL,                      /* getmem.term_cmd */
-  },
-  {
-    "sr %s %x\r",              /* setreg.cmd (name, value) */
-    NULL,                      /* setreg.resp_delim */
-    NULL,                      /* setreg.term */
-    NULL                       /* setreg.term_cmd */
-  },
-  {
-    "dr %s\r",                 /* getreg.cmd (name) */
-    " = ",                     /* getreg.resp_delim */
-    NULL,                      /* getreg.term */
-    NULL                       /* getreg.term_cmd */
-  },
-  "dr\r",                      /* dump_registers */
-  "\\(\\w+\\) = \\([0-9a-fA-F]+\\)", /* register_pattern */
-  est_supply_register,         /* supply_register */
-  "dl\r",                      /* download command */
-  "+",                         /* load response */
-  ">BKM>",                     /* monitor command prompt */
-  NULL,                                /* end-of-command delimitor */
-  NULL,                                /* optional command terminator */
-  &est_ops,                    /* target operations */
-  est_loadtypes,               /* loadtypes */
-  est_loadprotos,              /* loadprotos */
-  "9600",                      /* supported baud rates */
-  SERIAL_1_STOPBITS,           /* number of stop bits */
-  est_regnames,                        /* registers names */
-  MONITOR_OPS_MAGIC            /* magic */
-  };
+  est_cmds.flags = MO_CLR_BREAK_USES_ADDR | MO_FILL_USES_ADDR | MO_NEED_REGDUMP_AFTER_CONT |
+    MO_SREC_ACK | MO_SREC_ACK_PLUS;
+  est_cmds.init = est_inits;   /* Init strings */
+  est_cmds.cont = "go\r";      /* continue command */
+  est_cmds.step = "sidr\r";    /* single step */
+  est_cmds.stop = "\003";      /* ^C interrupts the program */
+  est_cmds.set_break = "sb %x\r";      /* set a breakpoint */
+  est_cmds.clr_break = "rb %x\r";      /* clear a breakpoint */
+  est_cmds.clr_all_break = "rb\r";     /* clear all breakpoints */
+  est_cmds.fill = "bfb %x %x %x\r";    /* fill (start end val) */
+  est_cmds.setmem.cmdb = "smb %x %x\r";                /* setmem.cmdb (addr, value) */
+  est_cmds.setmem.cmdw = "smw %x %x\r";                /* setmem.cmdw (addr, value) */
+  est_cmds.setmem.cmdl = "sml %x %x\r";                /* setmem.cmdl (addr, value) */
+  est_cmds.setmem.cmdll = NULL;        /* setmem.cmdll (addr, value) */
+  est_cmds.setmem.resp_delim = NULL;   /* setreg.resp_delim */
+  est_cmds.setmem.term = NULL; /* setreg.term */
+  est_cmds.setmem.term_cmd = NULL;     /* setreg.term_cmd */
+  est_cmds.getmem.cmdb = "dmb %x %x\r";                /* getmem.cmdb (addr, len) */
+  est_cmds.getmem.cmdw = "dmw %x %x\r";                /* getmem.cmdw (addr, len) */
+  est_cmds.getmem.cmdl = "dml %x %x\r";                /* getmem.cmdl (addr, len) */
+  est_cmds.getmem.cmdll = NULL;        /* getmem.cmdll (addr, len) */
+  est_cmds.getmem.resp_delim = ": ";   /* getmem.resp_delim */
+  est_cmds.getmem.term = NULL; /* getmem.term */
+  est_cmds.getmem.term_cmd = NULL;     /* getmem.term_cmd */
+  est_cmds.setreg.cmd = "sr %s %x\r";  /* setreg.cmd (name, value) */
+  est_cmds.setreg.resp_delim = NULL;   /* setreg.resp_delim */
+  est_cmds.setreg.term = NULL; /* setreg.term */
+  est_cmds.setreg.term_cmd = NULL;     /* setreg.term_cmd */
+  est_cmds.getreg.cmd = "dr %s\r";     /* getreg.cmd (name) */
+  est_cmds.getreg.resp_delim = " = ";  /* getreg.resp_delim */
+  est_cmds.getreg.term = NULL; /* getreg.term */
+  est_cmds.getreg.term_cmd = NULL;     /* getreg.term_cmd */
+  est_cmds.dump_registers = "dr\r";    /* dump_registers */
+  est_cmds.register_pattern = "\\(\\w+\\) = \\([0-9a-fA-F]+\\)";       /* register_pattern */
+  est_cmds.supply_register = est_supply_register;
+  est_cmds.load_routine = NULL;        /* load_routine (defaults to SRECs) */
+  est_cmds.load = "dl\r";      /* download command */
+  est_cmds.loadresp = "+";     /* load response */
+  est_cmds.prompt = ">BKM>";   /* monitor command prompt */
+  est_cmds.line_term = "\r";   /* end-of-line terminator */
+  est_cmds.cmd_end = NULL;     /* optional command terminator */
+  est_cmds.target = &est_ops;  /* target operations */
+  est_cmds.stopbits = SERIAL_1_STOPBITS;       /* number of stop bits */
+  est_cmds.regnames = NULL;
+  est_cmds.regname = est_regname; /*register names*/
+  est_cmds.magic = MONITOR_OPS_MAGIC;  /* magic */
+}                              /* init_est_cmds */
 
-void
-est_open(args, from_tty)
-     char *args;
-     int from_tty;
+static void
+est_open (char *args, int from_tty)
 {
   monitor_open (args, &est_cmds, from_tty);
 }
 
+extern initialize_file_ftype _initialize_est; /* -Wmissing-prototypes */
+
 void
-_initialize_est ()
+_initialize_est (void)
 {
+  init_est_cmds ();
   init_monitor_ops (&est_ops);
 
   est_ops.to_shortname = "est";
This page took 0.026172 seconds and 4 git commands to generate.