aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparcl-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sparcl-tdep.c')
-rw-r--r--gdb/sparcl-tdep.c41
1 files changed, 24 insertions, 17 deletions
diff --git a/gdb/sparcl-tdep.c b/gdb/sparcl-tdep.c
index 0d081ec..b97496d 100644
--- a/gdb/sparcl-tdep.c
+++ b/gdb/sparcl-tdep.c
@@ -296,30 +296,39 @@ open_tty (name)
return desc;
}
+/* Read a single character from the remote end, masking it down to 7 bits. */
+
static int
-send_resp (desc, c)
+readchar (desc, timeout)
serial_t desc;
- char c;
+ int timeout;
{
- int i;
+ int ch;
- SERIAL_WRITE (desc, &c, 1);
- i = SERIAL_READCHAR (desc, 2);
-
- if (i >= 0)
- return i;
+ ch = SERIAL_READCHAR (desc, timeout);
- switch (i)
+ switch (ch)
{
+ case SERIAL_EOF:
+ error ("SPARClite remote connection closed");
case SERIAL_ERROR:
- perror_with_name ("Remote communication error");
+ perror_with_name ("SPARClite communication error");
case SERIAL_TIMEOUT:
- error ("Remote timeout");
- case SERIAL_EOF:
- error ("Remote connection closed");
+ error ("SPARClite remote timeout");
+ default:
+ return ch;
}
}
+static int
+send_resp (desc, c)
+ serial_t desc;
+ char c;
+{
+ SERIAL_WRITE (desc, &c, 1);
+ return readchar (desc, 2);
+}
+
static void
close_tty (ignore)
int ignore;
@@ -652,7 +661,7 @@ sparclite_serial_start (entry)
store_unsigned_integer (buffer + 1, 4, entry);
SERIAL_WRITE (remote_desc, buffer, 1 + 4);
- i = SERIAL_READCHAR (remote_desc, 2);
+ i = readchar (remote_desc, 2);
if (i != 0x55)
error ("Can't start SparcLite. Error code %d\n", i);
}
@@ -684,9 +693,7 @@ sparclite_serial_write (from_bfd, from_sec, from_addr, to_addr, len)
error ("Bad response from load command (0x%x)", i);
SERIAL_WRITE (remote_desc, buffer, 4 + 4 + len);
- i = SERIAL_READCHAR (remote_desc, 2);
- if (i < 0)
- error ("I/O error in serial code. Return code %d\n", i);
+ i = readchar (remote_desc, 2);
if (i != checksum)
error ("Bad checksum from load command (0x%x)", i);