* gdb.base/fileio.exp: Drop tests for nointerrupts and noinferiorio.
[deliverable/binutils-gdb.git] / gdb / dink32-rom.c
index a2d0326d93d809c6ecafcd731013edec4665a664..3b10c7caa2e7fd5bc932c3f2bf28335fba29f5e1 100644 (file)
@@ -1,39 +1,39 @@
 /* Remote debugging interface for DINK32 (PowerPC) ROM monitor for
    GDB, the GNU debugger.
-   Copyright 1997 Free Software Foundation, Inc.
+   Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
 
-This file is part of GDB.
+   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 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.
+   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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
 #include "gdbcore.h"
 #include "target.h"
 #include "monitor.h"
 #include "serial.h"
+#include "symfile.h" /* For generic_load() */
+#include "inferior.h" /* For write_pc() */
+#include "regcache.h"
 
-static void dink32_open PARAMS ((char *args, int from_tty));
+static void dink32_open (char *args, int from_tty);
 
 static void
-dink32_supply_register (regname, regnamelen, val, vallen)
-     char *regname;
-     int regnamelen;
-     char *val;
-     int vallen;
+dink32_supply_register (char *regname, int regnamelen, char *val, int vallen)
 {
-  int regno = 0, base = 0;
+  int regno = 0;
 
   if (regnamelen < 2 || regnamelen > 4)
     return;
@@ -97,20 +97,15 @@ dink32_supply_register (regname, regnamelen, val, vallen)
 }
 
 static void
-dink32_load (monops, filename, from_tty)
-     struct monitor_ops *monops;
-     char *filename;
-     int from_tty;
+dink32_load (struct monitor_ops *monops, char *filename, int from_tty)
 {
-  extern int inferior_pid;
-
   generic_load (filename, from_tty);
 
   /* Finally, make the PC point at the start address */
   if (exec_bfd)
     write_pc (bfd_get_start_address (exec_bfd));
 
-  inferior_pid = 0;             /* No process now */
+  inferior_ptid = null_ptid;           /* No process now */
 }
 
 
@@ -119,45 +114,48 @@ dink32_load (monops, filename, from_tty)
    different names than GDB does, and don't support all the registers
    either.  */
 
-static char *dink32_regnames[NUM_REGS] =
+static char *dink32_regnames[] =
 {
-  "r0",   "r1",   "r2",   "r3",   "r4",   "r5",   "r6",   "r7",
-  "r8",   "r9",   "r10",  "r11",  "r12",  "r13",  "r14",  "r15",
-  "r16",  "r17",  "r18",  "r19",  "r20",  "r21",  "r22",  "r23",
-  "r24",  "r25",  "r26",  "r27",  "r28",  "r29",  "r30",  "r31",
+  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+  "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
+  "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
+  "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
 
-  "fr0",  "fr1",  "fr2",  "fr3",  "fr4",  "fr5",  "fr6",  "fr7",
-  "fr8",  "fr9",  "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
-  "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
-  "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31",
+  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
+  "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
+  "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
+  "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
 
-  "srr0", "msr",  "cr",   "lr",   "ctr",  "xer",  "xer"
+  "srr0", "msr", "cr", "lr", "ctr", "xer", "xer"
 };
 
 static struct target_ops dink32_ops;
 
-static char *dink32_inits[] = {"\r", NULL};
+static char *dink32_inits[] =
+{"\r", NULL};
 
 static struct monitor_ops dink32_cmds;
 
 static void
-dink32_open (args, from_tty)
-     char *args;
-     int from_tty;
+dink32_open (char *args, int from_tty)
 {
   monitor_open (args, &dink32_cmds, from_tty);
 }
 
+extern initialize_file_ftype _initialize_dink32_rom; /* -Wmissing-prototypes */
+
 void
-_initialize_dink32_rom ()
+_initialize_dink32_rom (void)
 {
-  dink32_cmds.flags = MO_HEX_PREFIX | MO_GETMEM_NEEDS_RANGE | MO_FILL_USES_ADDR | MO_HANDLE_NL | MO_32_REGS_PAIRED | MO_SETREG_INTERACTIVE | MO_SETMEM_INTERACTIVE | MO_GETMEM_16_BOUNDARY | MO_CLR_BREAK_1_BASED;
+  dink32_cmds.flags = MO_HEX_PREFIX | MO_GETMEM_NEEDS_RANGE | MO_FILL_USES_ADDR | MO_HANDLE_NL | MO_32_REGS_PAIRED | MO_SETREG_INTERACTIVE | MO_SETMEM_INTERACTIVE | MO_GETMEM_16_BOUNDARY | MO_CLR_BREAK_1_BASED | MO_SREC_ACK | MO_SREC_ACK_ROTATE;
   dink32_cmds.init = dink32_inits;
   dink32_cmds.cont = "go +\r";
   dink32_cmds.step = "tr +\r";
   dink32_cmds.set_break = "bp 0x%x\r";
   dink32_cmds.clr_break = "bp %d\r";
+#if 0                          /* Would need to follow strict alignment rules.. */
   dink32_cmds.fill = "mf %x %x %x\r";
+#endif
   dink32_cmds.setmem.cmdb = "mm -b %x\r";
   dink32_cmds.setmem.cmdw = "mm -w %x\r";
   dink32_cmds.setmem.cmdl = "mm %x\r";
@@ -171,8 +169,12 @@ _initialize_dink32_rom ()
   dink32_cmds.dump_registers = "rd r\r";
   dink32_cmds.register_pattern = "\\(\\w+\\) +=\\([0-9a-fA-F]+\\b\\)";
   dink32_cmds.supply_register = dink32_supply_register;
+  /* S-record download, via "keyboard port".  */
   dink32_cmds.load = "dl -k\r";
+  dink32_cmds.loadresp = "Set Input Port : set to Keyboard Port\r";
+#if 0                          /* slow load routine not needed if S-records work... */
   dink32_cmds.load_routine = dink32_load;
+#endif
   dink32_cmds.prompt = "DINK32_603 >>";
   dink32_cmds.line_term = "\r";
   dink32_cmds.target = &dink32_ops;
This page took 0.02665 seconds and 4 git commands to generate.