summaryrefslogtreecommitdiff
path: root/gdb/ser-go32.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/ser-go32.c')
-rw-r--r--gdb/ser-go32.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c
index 8a19dd4e88..ec1c3e0952 100644
--- a/gdb/ser-go32.c
+++ b/gdb/ser-go32.c
@@ -796,9 +796,16 @@ dos_write (serial_t scb, const char *str, int len)
/* send the data, fifosize bytes at a time */
cnt = fifosize > len ? len : fifosize;
port->txbusy = 1;
+ /* Francisco Pastor <fpastor.etra-id@etra.es> says OUTSB messes
+ up the communications with UARTs with FIFOs. */
+#ifdef UART_FIFO_WORKS
outportsb (port->base + com_data, str, cnt);
str += cnt;
len -= cnt;
+#else
+ for ( ; cnt > 0; cnt--, len--)
+ outportb (port->base + com_data, *str++);
+#endif
#ifdef DOS_STATS
cnts[CNT_TX] += cnt;
#endif