diff options
Diffstat (limited to 'gdb/remote-mips.c')
-rw-r--r-- | gdb/remote-mips.c | 420 |
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); } |