aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparcl-tdep.c
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1995-10-16 18:41:17 +0000
committerStu Grossman <grossman@cygnus>1995-10-16 18:41:17 +0000
commit934ec87c6b17ba28fa03d881f42e4756b14272f4 (patch)
tree48154a3997e4765a78f1dc0b967c6179f90958b2 /gdb/sparcl-tdep.c
parent4930f0a7f4f3e9269b1c03d4bd1167198c55f269 (diff)
downloadgdb-934ec87c6b17ba28fa03d881f42e4756b14272f4.zip
gdb-934ec87c6b17ba28fa03d881f42e4756b14272f4.tar.gz
gdb-934ec87c6b17ba28fa03d881f42e4756b14272f4.tar.bz2
* sparcl-tdep.c: Cleanup serial error handling.
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);