X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fremote-est.c;h=884429ac28cdaf8bdb92101cc2a29c5651b1ca58;hb=8b1ca062713c30f40c1fb4ab889f048a97c38f3b;hp=1810a6adf24c034698ca447fc71be4b3f41e5e7f;hpb=dc9e099fc0eced486ae2b49455c9da113c11f4ff;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-est.c b/gdb/remote-est.c index 1810a6adf2..884429ac28 100644 --- a/gdb/remote-est.c +++ b/gdb/remote-est.c @@ -1,5 +1,6 @@ /* Remote debugging interface for EST-300 ICE, for GDB - Copyright 1995 Free Software Foundation, Inc. + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain for Cygnus Support. @@ -27,15 +28,14 @@ #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; @@ -57,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; @@ -78,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 @@ -136,7 +148,7 @@ init_est_cmds (void) 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; /* supply_register */ + 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 */ @@ -145,20 +157,21 @@ init_est_cmds (void) 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 = est_regnames; /* registers names */ + est_cmds.regnames = NULL; + est_cmds.regname = est_regname; /*register names*/ est_cmds.magic = MONITOR_OPS_MAGIC; /* magic */ } /* init_est_cmds */ static void -est_open (args, from_tty) - char *args; - int from_tty; +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);