diff options
author | Steve Chamberlain <sac@cygnus> | 1995-01-31 19:30:27 +0000 |
---|---|---|
committer | Steve Chamberlain <sac@cygnus> | 1995-01-31 19:30:27 +0000 |
commit | ccbae88965eadba00af7256362c845c6e9a8b135 (patch) | |
tree | 580f6bf7e1808386cd086b68b9a5761c92f6ea7e /gdb | |
parent | a81ce07da83c193a2eb859cf7288a9a94a75d042 (diff) | |
download | gdb-ccbae88965eadba00af7256362c845c6e9a8b135.zip gdb-ccbae88965eadba00af7256362c845c6e9a8b135.tar.gz gdb-ccbae88965eadba00af7256362c845c6e9a8b135.tar.bz2 |
From nigel@algor.co.uk.
* ser-go32.c (dos_close): Don't crash if scb null.
(dos_sendbreak): New function.
(dos_ops): Point to dos_sendbreak.
(dos_info): Calculate COM number correctly.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/ser-go32.c | 34 |
2 files changed, 38 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ef0787..5340058 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +Tue Jan 31 11:14:44 1995 Steve Chamberlain <sac@splat> + + From nigel@algor.co.uk. + * ser-go32.c (dos_close): Don't crash if scb null. + (dos_sendbreak): New function. + (dos_ops): Point to dos_sendbreak. + (dos_info): Calculate COM number correctly. + Tue Jan 31 09:40:11 1995 Jim Kingdon (kingdon@lioth.cygnus.com) * xcoffread.c (process_xcoff_symbol): Use new variables diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c index 70887f0..a1c0b6e 100644 --- a/gdb/ser-go32.c +++ b/gdb/ser-go32.c @@ -552,9 +552,13 @@ static void dos_close (scb) serial_t scb; { - struct dos_ttystate *port = &ports[scb->fd]; + struct dos_ttystate *port; struct intrupt *intrupt; + if (!scb) + return; + + port = &ports[scb->fd]; if (!(intrupt = port->intrupt)) return; @@ -768,6 +772,28 @@ dos_write (scb, str, len) return 0; } + +static int +dos_sendbreak (scb) + serial_t scb; +{ + volatile struct dos_ttystate *port = &ports[scb->fd]; + unsigned char cfcr; + long then; + + cfcr = inb(port, com_cfcr); + outb(port, com_cfcr, cfcr | CFCR_SBREAK); + + /* 0.25 sec delay */ + then = rawclock () + RAWHZ / 4; + while ((rawclock () - then) < 0) + continue; + + outb(port, com_cfcr, cfcr); + return 0; +} + + static struct serial_ops dos_ops = { "hardwire", @@ -778,7 +804,7 @@ static struct serial_ops dos_ops = dos_write, dos_noop, /* flush output */ dos_flush_input, - dos_noop, /* send break -- currently used only for nindy */ + dos_sendbreak, dos_raw, dos_get_tty_state, dos_set_tty_state, @@ -800,12 +826,12 @@ dos_info (arg, from_tty) { if (port->baudrate == 0) continue; - printf_filtered ("Port:\tCOM%d (%sactive)\n", port - ports, + printf_filtered ("Port:\tCOM%d (%sactive)\n", port - ports + 1, port->intrupt ? "" : "not "); printf_filtered ("Addr:\t0x%03x (irq %d)\n", port->base, port->irq); printf_filtered ("16550:\t%s\n", port->fifo ? "yes" : "no"); printf_filtered ("Speed:\t%d baud\n", port->baudrate); - printf_filtered ("Errs:\tframing %d parity %d overflow %d\n", + printf_filtered ("Errs:\tframing %d parity %d overflow %d\n\n", port->ferr, port->perr, port->oflo); } |