summaryrefslogtreecommitdiff
path: root/gdb/remote-mips.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/remote-mips.c')
-rw-r--r--gdb/remote-mips.c420
1 files changed, 161 insertions, 259 deletions
diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c
index 883ee9e8617..6a753270dc6 100644
--- a/gdb/remote-mips.c
+++ b/gdb/remote-mips.c
@@ -1,5 +1,5 @@
/* Remote debugging interface for MIPS remote debugging protocol.
- Copyright 1993-1995, 2000 Free Software Foundation, Inc.
+ Copyright 1993, 1994, 1995, 2000 Free Software Foundation, Inc.
Contributed by Cygnus Support. Written by Ian Lance Taylor
<ian@cygnus.com>.
@@ -36,6 +36,8 @@
#include <sys/types.h>
#include <sys/stat.h>
+#include <ctype.h>
+
/* Microsoft C's stat.h doesn't define all the POSIX file modes. */
#ifndef S_IROTH
#define S_IROTH S_IREAD
@@ -75,9 +77,8 @@ static void mips_send_command (const char *cmd, int prompt);
static int mips_receive_packet (char *buff, int throw_error, int timeout);
-static CORE_ADDR mips_request (int cmd, CORE_ADDR addr,
- CORE_ADDR data, int *perr, int timeout,
- char *buff);
+static ULONGEST mips_request (int cmd, ULONGEST addr, ULONGEST data,
+ int *perr, int timeout, char *buff);
static void mips_initialize (void);
@@ -356,7 +357,7 @@ static int mips_send_retries = 10;
/* The number of garbage characters to accept when looking for an
SYN for the next packet. */
-static int mips_syn_garbage = 1050;
+static int mips_syn_garbage = 10;
/* The time to wait for a packet, in seconds. */
static int mips_receive_wait = 5;
@@ -456,7 +457,7 @@ static int monitor_warnings;
static void
-close_ports ()
+close_ports (void)
{
mips_is_open = 0;
SERIAL_CLOSE (mips_desc);
@@ -506,9 +507,7 @@ mips_error (char *string,...)
^x notation or in hex. */
static void
-fputc_readable (ch, file)
- int ch;
- struct ui_file *file;
+fputc_readable (int ch, struct ui_file *file)
{
if (ch == '\n')
fputc_unfiltered ('\n', file);
@@ -527,9 +526,7 @@ fputc_readable (ch, file)
^x notation or in hex. */
static void
-fputs_readable (string, file)
- char *string;
- struct ui_file *file;
+fputs_readable (char *string, struct ui_file *file)
{
int c;
@@ -543,9 +540,7 @@ fputs_readable (string, file)
*/
int
-mips_expect_timeout (string, timeout)
- char *string;
- int timeout;
+mips_expect_timeout (char *string, int timeout)
{
char *p = string;
@@ -601,8 +596,7 @@ mips_expect_timeout (string, timeout)
*/
int
-mips_expect (string)
- char *string;
+mips_expect (char *string)
{
return mips_expect_timeout (string, 2);
}
@@ -610,9 +604,7 @@ mips_expect (string)
/* Read the required number of characters into the given buffer (which
is assumed to be large enough). The only failure is a timeout. */
int
-mips_getstring (string, n)
- char *string;
- int n;
+mips_getstring (char *string, int n)
{
char *p = string;
int c;
@@ -651,8 +643,7 @@ mips_getstring (string, n)
port. */
static int
-mips_readchar (timeout)
- int timeout;
+mips_readchar (int timeout)
{
int ch;
static int state = 0;
@@ -730,11 +721,7 @@ mips_readchar (timeout)
or -1 for timeout. */
static int
-mips_receive_header (hdr, pgarbage, ch, timeout)
- unsigned char *hdr;
- int *pgarbage;
- int ch;
- int timeout;
+mips_receive_header (unsigned char *hdr, int *pgarbage, int ch, int timeout)
{
int i;
@@ -753,15 +740,26 @@ mips_receive_header (hdr, pgarbage, ch, timeout)
{
/* Printing the character here lets the user of gdb see
what the program is outputting, if the debugging is
- being done on the console port. Don't use _filtered;
- we can't deal with a QUIT out of target_wait. */
- if (!mips_initializing || remote_debug > 0)
- {
- fputc_readable (ch, gdb_stdlog);
- gdb_flush (gdb_stdlog);
- }
+ being done on the console port. Don't use _filtered:
+ we can't deal with a QUIT out of target_wait and
+ buffered target output confuses the user. */
+ if (!mips_initializing || remote_debug > 0)
+ {
+ if (isprint (ch) || isspace (ch))
+ {
+ fputc_unfiltered (ch, gdb_stdtarg);
+ }
+ else
+ {
+ fputc_readable (ch, gdb_stdtarg);
+ }
+ gdb_flush (gdb_stdtarg);
+ }
+
+ /* Only count unprintable characters. */
+ if (! (isprint (ch) || isspace (ch)))
+ (*pgarbage) += 1;
- ++*pgarbage;
if (mips_syn_garbage > 0
&& *pgarbage > mips_syn_garbage)
mips_error ("Debug protocol failure: more than %d characters before a sync.",
@@ -795,11 +793,7 @@ mips_receive_header (hdr, pgarbage, ch, timeout)
for success, -1 for timeout, -2 for error. */
static int
-mips_receive_trailer (trlr, pgarbage, pch, timeout)
- unsigned char *trlr;
- int *pgarbage;
- int *pch;
- int timeout;
+mips_receive_trailer (unsigned char *trlr, int *pgarbage, int *pch, int timeout)
{
int i;
int ch;
@@ -821,10 +815,7 @@ mips_receive_trailer (trlr, pgarbage, pch, timeout)
DATA points to the packet data. LEN is the length of DATA. */
static int
-mips_cksum (hdr, data, len)
- const unsigned char *hdr;
- const unsigned char *data;
- int len;
+mips_cksum (const unsigned char *hdr, const unsigned char *data, int len)
{
register const unsigned char *p;
register int c;
@@ -849,9 +840,7 @@ mips_cksum (hdr, data, len)
/* Send a packet containing the given ASCII string. */
static void
-mips_send_packet (s, get_ack)
- const char *s;
- int get_ack;
+mips_send_packet (const char *s, int get_ack)
{
/* unsigned */ int len;
unsigned char *packet;
@@ -1016,10 +1005,7 @@ mips_send_packet (s, get_ack)
don't print an error message and return -1. */
static int
-mips_receive_packet (buff, throw_error, timeout)
- char *buff;
- int throw_error;
- int timeout;
+mips_receive_packet (char *buff, int throw_error, int timeout)
{
int ch;
int garbage;
@@ -1234,14 +1220,13 @@ mips_receive_packet (buff, throw_error, timeout)
occurs, it sets *PERR to 1 and sets errno according to what the
target board reports. */
-static CORE_ADDR
-mips_request (cmd, addr, data, perr, timeout, buff)
- int cmd;
- CORE_ADDR addr;
- CORE_ADDR data;
- int *perr;
- int timeout;
- char *buff;
+static ULONGEST
+mips_request (int cmd,
+ ULONGEST addr,
+ ULONGEST data,
+ int *perr,
+ int timeout,
+ char *buff)
{
char myBuff[DATA_MAXLEN + 1];
int len;
@@ -1296,23 +1281,19 @@ mips_request (cmd, addr, data, perr, timeout, buff)
}
static void
-mips_initialize_cleanups (arg)
- PTR arg;
+mips_initialize_cleanups (PTR arg)
{
mips_initializing = 0;
}
static void
-mips_exit_cleanups (arg)
- PTR arg;
+mips_exit_cleanups (PTR arg)
{
mips_exiting = 0;
}
static void
-mips_send_command (cmd, prompt)
- const char *cmd;
- int prompt;
+mips_send_command (const char *cmd, int prompt)
{
SERIAL_WRITE (mips_desc, cmd, strlen (cmd));
mips_expect (cmd);
@@ -1323,7 +1304,7 @@ mips_send_command (cmd, prompt)
/* Enter remote (dbx) debug mode: */
static void
-mips_enter_debug ()
+mips_enter_debug (void)
{
/* Reset the sequence numbers, ready for the new debug sequence: */
mips_send_seq = 0;
@@ -1353,7 +1334,7 @@ mips_enter_debug ()
/* Exit remote (dbx) debug mode, returning to the monitor prompt: */
static int
-mips_exit_debug ()
+mips_exit_debug (void)
{
int err;
struct cleanup *old_cleanups = make_cleanup (mips_exit_cleanups, NULL);
@@ -1364,15 +1345,13 @@ mips_exit_debug ()
{
/* The DDB (NEC) and MiniRISC (LSI) versions of PMON exit immediately,
so we do not get a reply to this command: */
- mips_request ('x', (unsigned int) 0, (unsigned int) 0, NULL,
- mips_receive_wait, NULL);
+ mips_request ('x', 0, 0, NULL, mips_receive_wait, NULL);
mips_need_reply = 0;
if (!mips_expect (" break!"))
return -1;
}
else
- mips_request ('x', (unsigned int) 0, (unsigned int) 0, &err,
- mips_receive_wait, NULL);
+ mips_request ('x', 0, 0, &err, mips_receive_wait, NULL);
if (!mips_expect (mips_monitor_prompt))
return -1;
@@ -1386,7 +1365,7 @@ mips_exit_debug ()
really connected. */
static void
-mips_initialize ()
+mips_initialize (void)
{
int err;
struct cleanup *old_cleanups = make_cleanup (mips_initialize_cleanups, NULL);
@@ -1512,20 +1491,15 @@ mips_initialize ()
/* If this doesn't call error, we have connected; we don't care if
the request itself succeeds or fails. */
- mips_request ('r', (unsigned int) 0, (unsigned int) 0, &err,
- mips_receive_wait, NULL);
+ mips_request ('r', 0, 0, &err, mips_receive_wait, NULL);
set_current_frame (create_new_frame (read_fp (), read_pc ()));
select_frame (get_current_frame (), 0);
}
/* Open a connection to the remote board. */
static void
-common_open (ops, name, from_tty, new_monitor, new_monitor_prompt)
- struct target_ops *ops;
- char *name;
- int from_tty;
- enum mips_monitor_type new_monitor;
- char *new_monitor_prompt;
+common_open (struct target_ops *ops, char *name, int from_tty,
+ enum mips_monitor_type new_monitor, char *new_monitor_prompt)
{
char *ptype;
char *serial_port_name;
@@ -1650,33 +1624,42 @@ device is attached to the target board (e.g., /dev/ttya).\n"
}
static void
-mips_open (name, from_tty)
- char *name;
- int from_tty;
+mips_open (char *name, int from_tty)
{
- common_open (&mips_ops, name, from_tty, MON_IDT, TARGET_MONITOR_PROMPT);
+ const char *monitor_prompt = NULL;
+ if (TARGET_ARCHITECTURE != NULL
+ && TARGET_ARCHITECTURE->arch == bfd_arch_mips)
+ {
+ switch (TARGET_ARCHITECTURE->mach)
+ {
+ case bfd_mach_mips4100:
+ case bfd_mach_mips4300:
+ case bfd_mach_mips4600:
+ case bfd_mach_mips4650:
+ case bfd_mach_mips5000:
+ monitor_prompt = "<RISQ> ";
+ break;
+ }
+ }
+ if (monitor_prompt == NULL)
+ monitor_prompt = "<IDT>";
+ common_open (&mips_ops, name, from_tty, MON_IDT, monitor_prompt);
}
static void
-pmon_open (name, from_tty)
- char *name;
- int from_tty;
+pmon_open (char *name, int from_tty)
{
common_open (&pmon_ops, name, from_tty, MON_PMON, "PMON> ");
}
static void
-ddb_open (name, from_tty)
- char *name;
- int from_tty;
+ddb_open (char *name, int from_tty)
{
common_open (&ddb_ops, name, from_tty, MON_DDB, "NEC010>");
}
static void
-lsi_open (name, from_tty)
- char *name;
- int from_tty;
+lsi_open (char *name, int from_tty)
{
int i;
@@ -1690,8 +1673,7 @@ lsi_open (name, from_tty)
/* Close a connection to the remote board. */
static void
-mips_close (quitting)
- int quitting;
+mips_close (int quitting)
{
if (mips_is_open)
{
@@ -1705,9 +1687,7 @@ mips_close (quitting)
/* Detach from the remote board. */
static void
-mips_detach (args, from_tty)
- char *args;
- int from_tty;
+mips_detach (char *args, int from_tty)
{
if (args)
error ("Argument given to \"detach\" when remotely debugging.");
@@ -1725,17 +1705,13 @@ mips_detach (args, from_tty)
where PMON does return a reply. */
static void
-mips_resume (pid, step, siggnal)
- int pid, step;
- enum target_signal siggnal;
+mips_resume (int pid, int step, enum target_signal siggnal)
{
int err;
/* LSI PMON requires returns a reply packet "0x1 s 0x0 0x57f" after
a single step, so we wait for that. */
- mips_request (step ? 's' : 'c',
- (unsigned int) 1,
- (unsigned int) siggnal,
+ mips_request (step ? 's' : 'c', 1, siggnal,
mips_monitor == MON_LSI && step ? &err : (int *) NULL,
mips_receive_wait, NULL);
}
@@ -1743,8 +1719,7 @@ mips_resume (pid, step, siggnal)
/* Return the signal corresponding to SIG, where SIG is the number which
the MIPS protocol uses for the signal. */
enum target_signal
-mips_signal_from_protocol (sig)
- int sig;
+mips_signal_from_protocol (int sig)
{
/* We allow a few more signals than the IDT board actually returns, on
the theory that there is at least *some* hope that perhaps the numbering
@@ -1763,9 +1738,7 @@ mips_signal_from_protocol (sig)
/* Wait until the remote stops, and return a wait status. */
static int
-mips_wait (pid, status)
- int pid;
- struct target_waitstatus *status;
+mips_wait (int pid, struct target_waitstatus *status)
{
int rstatus;
int err;
@@ -1790,8 +1763,7 @@ mips_wait (pid, status)
/* No timeout; we sit here as long as the program continues to execute. */
mips_wait_flag = 1;
- rstatus = mips_request ('\000', (unsigned int) 0, (unsigned int) 0, &err, -1,
- buff);
+ rstatus = mips_request ('\000', 0, 0, &err, -1, buff);
mips_wait_flag = 0;
if (err)
mips_error ("Remote failure: %s", safe_strerror (errno));
@@ -1927,8 +1899,7 @@ mips_wait (pid, status)
#define REGNO_OFFSET 96
static int
-mips_map_regno (regno)
- int regno;
+mips_map_regno (int regno)
{
if (regno < 32)
return regno;
@@ -1957,8 +1928,7 @@ mips_map_regno (regno)
/* Fetch the remote registers. */
static void
-mips_fetch_registers (regno)
- int regno;
+mips_fetch_registers (int regno)
{
unsigned LONGEST val;
int err;
@@ -1987,11 +1957,11 @@ mips_fetch_registers (regno)
compiled without the 64bit register access commands. This
means we cannot get hold of the full register width. */
if (mips_monitor == MON_DDB)
- val = (unsigned) mips_request ('t', (unsigned int) pmon_reg,
- (unsigned int) 0, &err, mips_receive_wait, NULL);
+ val = (unsigned) mips_request ('t', pmon_reg, 0,
+ &err, mips_receive_wait, NULL);
else
- val = mips_request ('r', (unsigned int) pmon_reg,
- (unsigned int) 0, &err, mips_receive_wait, NULL);
+ val = mips_request ('r', pmon_reg, 0,
+ &err, mips_receive_wait, NULL);
if (err)
mips_error ("Can't read register %d: %s", regno,
safe_strerror (errno));
@@ -2012,15 +1982,14 @@ mips_fetch_registers (regno)
registers, so this function doesn't have to do anything. */
static void
-mips_prepare_to_store ()
+mips_prepare_to_store (void)
{
}
/* Store remote register(s). */
static void
-mips_store_registers (regno)
- int regno;
+mips_store_registers (int regno)
{
int err;
@@ -2031,7 +2000,7 @@ mips_store_registers (regno)
return;
}
- mips_request ('R', (unsigned int) mips_map_regno (regno),
+ mips_request ('R', mips_map_regno (regno),
read_register (regno),
&err, mips_receive_wait, NULL);
if (err)
@@ -2041,20 +2010,16 @@ mips_store_registers (regno)
/* Fetch a word from the target board. */
static unsigned int
-mips_fetch_word (addr)
- CORE_ADDR addr;
+mips_fetch_word (CORE_ADDR addr)
{
unsigned int val;
int err;
- /* FIXME! addr was cast to uint! */
- val = mips_request ('d', addr, (unsigned int) 0, &err,
- mips_receive_wait, NULL);
+ val = mips_request ('d', addr, 0, &err, mips_receive_wait, NULL);
if (err)
{
/* Data space failed; try instruction space. */
- /* FIXME! addr was cast to uint! */
- val = mips_request ('i', addr, (unsigned int) 0, &err,
+ val = mips_request ('i', addr, 0, &err,
mips_receive_wait, NULL);
if (err)
mips_error ("Can't read address 0x%s: %s",
@@ -2069,22 +2034,17 @@ mips_fetch_word (addr)
/* FIXME! make sure only 32-bit quantities get stored! */
static int
-mips_store_word (addr, val, old_contents)
- CORE_ADDR addr;
- unsigned int val;
- char *old_contents;
+mips_store_word (CORE_ADDR addr, unsigned int val, char *old_contents)
{
int err;
unsigned int oldcontents;
- oldcontents = mips_request ('D', addr, (unsigned int) val,
- &err,
+ oldcontents = mips_request ('D', addr, val, &err,
mips_receive_wait, NULL);
if (err)
{
/* Data space failed; try instruction space. */
- oldcontents = mips_request ('I', addr,
- (unsigned int) val, &err,
+ oldcontents = mips_request ('I', addr, val, &err,
mips_receive_wait, NULL);
if (err)
return errno;
@@ -2101,23 +2061,29 @@ mips_store_word (addr, val, old_contents)
for a longword, since it transfers values in ASCII. We want the
byte values, so we have to swap the longword values. */
+static int mask_address_p = 1;
+
static int
-mips_xfer_memory (memaddr, myaddr, len, write, ignore)
- CORE_ADDR memaddr;
- char *myaddr;
- int len;
- int write;
- struct target_ops *ignore;
-{
- register int i;
+mips_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
+ struct target_ops *ignore)
+{
+ int i;
+ CORE_ADDR addr;
+ int count;
+ char *buffer;
+ int status;
+
+ /* PMON targets do not cope well with 64 bit addresses. Mask the
+ value down to 32 bits. */
+ if (mask_address_p)
+ memaddr &= (CORE_ADDR) 0xffffffff;
+
/* Round starting address down to longword boundary. */
- register CORE_ADDR addr = memaddr & ~3;
+ addr = memaddr & ~3;
/* Round ending address up; get number of longwords that makes. */
- register int count = (((memaddr + len) - addr) + 3) / 4;
+ count = (((memaddr + len) - addr) + 3) / 4;
/* Allocate buffer of that many longwords. */
- register char *buffer = alloca (count * 4);
-
- int status;
+ buffer = alloca (count * 4);
if (write)
{
@@ -2181,8 +2147,7 @@ mips_xfer_memory (memaddr, myaddr, len, write, ignore)
/* Print info on this target. */
static void
-mips_files_info (ignore)
- struct target_ops *ignore;
+mips_files_info (struct target_ops *ignore)
{
printf_unfiltered ("Debugging a MIPS board over a serial line.\n");
}
@@ -2193,7 +2158,7 @@ mips_files_info (ignore)
right port, we could interrupt the process with a break signal. */
static void
-mips_kill ()
+mips_kill (void)
{
if (!mips_wait_flag)
return;
@@ -2246,10 +2211,7 @@ Give up (and stop debugging it)? "))
/* Start running on the target board. */
static void
-mips_create_inferior (execfile, args, env)
- char *execfile;
- char *args;
- char **env;
+mips_create_inferior (char *execfile, char *args, char **env)
{
CORE_ADDR entry_pt;
@@ -2276,7 +2238,7 @@ Can't pass arguments to remote MIPS board; arguments ignored.");
/* Clean up after a process. Actually nothing to do. */
static void
-mips_mourn_inferior ()
+mips_mourn_inferior (void)
{
if (current_ops != NULL)
unpush_target (current_ops);
@@ -2295,9 +2257,7 @@ mips_mourn_inferior ()
is accomplished via BREAKPOINT_MAX). */
static int
-mips_insert_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+mips_insert_breakpoint (CORE_ADDR addr, char *contents_cache)
{
if (monitor_supports_breakpoints)
return set_breakpoint (addr, MIPS_INSTLEN, BREAK_FETCH);
@@ -2306,9 +2266,7 @@ mips_insert_breakpoint (addr, contents_cache)
}
static int
-mips_remove_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+mips_remove_breakpoint (CORE_ADDR addr, char *contents_cache)
{
if (monitor_supports_breakpoints)
return clear_breakpoint (addr, MIPS_INSTLEN, BREAK_FETCH);
@@ -2328,9 +2286,7 @@ static CORE_ADDR mips_pmon_bp_info[PMON_MAX_BP];
/* NOTE: The code relies on this vector being zero-initialised by the system */
static int
-pmon_insert_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+pmon_insert_breakpoint (CORE_ADDR addr, char *contents_cache)
{
int status;
@@ -2403,9 +2359,7 @@ pmon_insert_breakpoint (addr, contents_cache)
}
static int
-pmon_remove_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+pmon_remove_breakpoint (CORE_ADDR addr, char *contents_cache)
{
if (monitor_supports_breakpoints)
{
@@ -2448,8 +2402,7 @@ pmon_remove_breakpoint (addr, contents_cache)
implements the TARGET_CAN_USE_HARDWARE_WATCHPOINT macro. */
int
-remote_mips_can_use_hardware_watchpoint (cnt)
- int cnt;
+remote_mips_can_use_hardware_watchpoint (int cnt)
{
return cnt < MAX_LSI_BREAKPOINTS && strcmp (target_shortname, "lsi") == 0;
}
@@ -2459,9 +2412,7 @@ remote_mips_can_use_hardware_watchpoint (cnt)
This is used for memory ref breakpoints. */
static unsigned long
-calculate_mask (addr, len)
- CORE_ADDR addr;
- int len;
+calculate_mask (CORE_ADDR addr, int len)
{
unsigned long mask;
int i;
@@ -2484,9 +2435,7 @@ calculate_mask (addr, len)
implement ordinary breakpoints using hardware facilities. */
int
-remote_mips_insert_hw_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+remote_mips_insert_hw_breakpoint (CORE_ADDR addr, char *contents_cache)
{
if (strcmp (target_shortname, "lsi") == 0)
return mips_insert_breakpoint (addr, contents_cache);
@@ -2499,9 +2448,7 @@ remote_mips_insert_hw_breakpoint (addr, contents_cache)
implement ordinary breakpoints using hardware facilities. */
int
-remote_mips_remove_hw_breakpoint (addr, contents_cache)
- CORE_ADDR addr;
- char *contents_cache;
+remote_mips_remove_hw_breakpoint (CORE_ADDR addr, char *contents_cache)
{
if (strcmp (target_shortname, "lsi") == 0)
return mips_remove_breakpoint (addr, contents_cache);
@@ -2514,10 +2461,7 @@ remote_mips_remove_hw_breakpoint (addr, contents_cache)
watchpoint. */
int
-remote_mips_set_watchpoint (addr, len, type)
- CORE_ADDR addr;
- int len;
- int type;
+remote_mips_set_watchpoint (CORE_ADDR addr, int len, int type)
{
if (set_breakpoint (addr, len, type))
return -1;
@@ -2526,10 +2470,7 @@ remote_mips_set_watchpoint (addr, len, type)
}
int
-remote_mips_remove_watchpoint (addr, len, type)
- CORE_ADDR addr;
- int len;
- int type;
+remote_mips_remove_watchpoint (CORE_ADDR addr, int len, int type)
{
if (clear_breakpoint (addr, len, type))
return -1;
@@ -2547,10 +2488,7 @@ remote_mips_stopped_by_watchpoint (void)
/* Insert a breakpoint. */
static int
-set_breakpoint (addr, len, type)
- CORE_ADDR addr;
- int len;
- enum break_type type;
+set_breakpoint (CORE_ADDR addr, int len, enum break_type type)
{
return common_breakpoint (1, addr, len, type);
}
@@ -2559,10 +2497,7 @@ set_breakpoint (addr, len, type)
/* Clear a breakpoint. */
static int
-clear_breakpoint (addr, len, type)
- CORE_ADDR addr;
- int len;
- enum break_type type;
+clear_breakpoint (CORE_ADDR addr, int len, enum break_type type)
{
return common_breakpoint (0, addr, len, type);
}
@@ -2576,9 +2511,7 @@ clear_breakpoint (addr, len, type)
This is a helper function for common_breakpoint. */
static int
-check_lsi_error (addr, rerrflg)
- CORE_ADDR addr;
- int rerrflg;
+check_lsi_error (CORE_ADDR addr, int rerrflg)
{
struct lsi_error *err;
char *saddr = paddr_nz (addr); /* printable address string */
@@ -2646,11 +2579,7 @@ check_lsi_error (addr, rerrflg)
Return 0 if successful; otherwise 1. */
static int
-common_breakpoint (set, addr, len, type)
- int set;
- CORE_ADDR addr;
- int len;
- enum break_type type;
+common_breakpoint (int set, CORE_ADDR addr, int len, enum break_type type)
{
char buf[DATA_MAXLEN + 1];
char cmd, rcmd;
@@ -2836,10 +2765,7 @@ common_breakpoint (set, addr, len, type)
}
static void
-send_srec (srec, len, addr)
- char *srec;
- int len;
- CORE_ADDR addr;
+send_srec (char *srec, int len, CORE_ADDR addr)
{
while (1)
{
@@ -2868,8 +2794,7 @@ send_srec (srec, len, addr)
/* Download a binary file by converting it to S records. */
static void
-mips_load_srec (args)
- char *args;
+mips_load_srec (char *args)
{
bfd *abfd;
asection *s;
@@ -2987,12 +2912,8 @@ mips_load_srec (args)
*/
static int
-mips_make_srec (buf, type, memaddr, myaddr, len)
- char *buf;
- int type;
- CORE_ADDR memaddr;
- unsigned char *myaddr;
- int len;
+mips_make_srec (char *buf, int type, CORE_ADDR memaddr, unsigned char *myaddr,
+ int len)
{
unsigned char checksum;
int i;
@@ -3059,11 +2980,7 @@ static char encoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01
pointer non-NULL). The function returns the number of encoded
characters written into the buffer. */
static int
-pmon_makeb64 (v, p, n, chksum)
- unsigned long v;
- char *p;
- int n;
- int *chksum;
+pmon_makeb64 (unsigned long v, char *p, int n, int *chksum)
{
int count = (n / 6);
@@ -3107,11 +3024,7 @@ pmon_makeb64 (v, p, n, chksum)
/* Shorthand function (that could be in-lined) to output the zero-fill
escape sequence into the data stream. */
static int
-pmon_zeroset (recsize, buff, amount, chksum)
- int recsize;
- char **buff;
- int *amount;
- unsigned int *chksum;
+pmon_zeroset (int recsize, char **buff, int *amount, unsigned int *chksum)
{
int count;
@@ -3123,10 +3036,7 @@ pmon_zeroset (recsize, buff, amount, chksum)
}
static int
-pmon_checkset (recsize, buff, value)
- int recsize;
- char **buff;
- int *value;
+pmon_checkset (int recsize, char **buff, int *value)
{
int count;
@@ -3156,14 +3066,9 @@ pmon_checkset (recsize, buff, value)
is for PMON 5.x on the Cogent Vr4300 board. */
static void
-pmon_make_fastrec (outbuf, inbuf, inptr, inamount, recsize, csum, zerofill)
- char **outbuf;
- unsigned char *inbuf;
- int *inptr;
- int inamount;
- int *recsize;
- unsigned int *csum;
- unsigned int *zerofill;
+pmon_make_fastrec (char **outbuf, unsigned char *inbuf, int *inptr,
+ int inamount, int *recsize, unsigned int *csum,
+ unsigned int *zerofill)
{
int count = 0;
char *p = *outbuf;
@@ -3218,8 +3123,7 @@ pmon_make_fastrec (outbuf, inbuf, inptr, inamount, recsize, csum, zerofill)
}
static int
-pmon_check_ack (mesg)
- char *mesg;
+pmon_check_ack (char *mesg)
{
#if defined(DOETXACK)
int c;
@@ -3242,7 +3146,7 @@ pmon_check_ack (mesg)
which is either a serial port or a UDP socket. */
static void
-pmon_start_download ()
+pmon_start_download (void)
{
if (tftp_in_use)
{
@@ -3274,9 +3178,7 @@ mips_expect_download (char *string)
}
static void
-pmon_end_download (final, bintotal)
- int final;
- int bintotal;
+pmon_end_download (int final, int bintotal)
{
char hexnumber[9]; /* includes '\0' space */
@@ -3339,9 +3241,7 @@ pmon_end_download (final, bintotal)
}
static void
-pmon_download (buffer, length)
- char *buffer;
- int length;
+pmon_download (char *buffer, int length)
{
if (tftp_in_use)
fwrite (buffer, 1, length, tftp_file);
@@ -3350,8 +3250,7 @@ pmon_download (buffer, length)
}
static void
-pmon_load_fast (file)
- char *file;
+pmon_load_fast (char *file)
{
bfd *abfd;
asection *s;
@@ -3498,9 +3397,7 @@ pmon_load_fast (file)
/* mips_load -- download a file. */
static void
-mips_load (file, from_tty)
- char *file;
- int from_tty;
+mips_load (char *file, int from_tty)
{
/* Get the board out of remote debugging mode. */
if (mips_exit_debug ())
@@ -3539,9 +3436,7 @@ mips_load (file, from_tty)
/* Pass the command argument as a packet to PMON verbatim. */
static void
-pmon_command (args, from_tty)
- char *args;
- int from_tty;
+pmon_command (char *args, int from_tty)
{
char buf[DATA_MAXLEN + 1];
int rlen;
@@ -3556,7 +3451,7 @@ pmon_command (args, from_tty)
}
void
-_initialize_remote_mips ()
+_initialize_remote_mips (void)
{
/* Initialize the fields in mips_ops that are common to all four targets. */
mips_ops.to_longname = "Remote MIPS debugging over serial line";
@@ -3667,4 +3562,11 @@ synchronize with the remote system. A value of -1 means that there is no limit\
add_com ("pmon <command>", class_obscure, pmon_command,
"Send a packet to PMON (must be in debug mode).");
+
+ add_show_from_set (add_set_cmd ("mask-address", no_class,
+ var_boolean, &mask_address_p,
+ "Set zeroing of upper 32 bits of 64-bit addresses when talking to PMON targets.\n\
+Use \"on\" to enable the masking and \"off\" to disable it.\n",
+ &setlist),
+ &showlist);
}