Mercurial > nand-ecoscentric
diff packages/io/serial/current/src/arm/pid_serial_with_ints.c @ 58:6e51d764f8f1 ecos-sw-1999-12-10
Merge from eCos master repository on 1999-12-10-07:47:04-GMT
| author | jlarmour |
|---|---|
| date | Fri, 10 Dec 1999 15:30:44 +0000 |
| parents | 1370c5e55234 |
| children | 7a6ac9edc838 |
line wrap: on
line diff
--- a/packages/io/serial/current/src/arm/pid_serial_with_ints.c +++ b/packages/io/serial/current/src/arm/pid_serial_with_ints.c @@ -302,13 +302,14 @@ pid_serial_DSR(cyg_vector_t vector, cyg_ pid_serial_info *pid_chan = (pid_serial_info *)chan->dev_priv; volatile struct serial_port *port = (volatile struct serial_port *)pid_chan->base; unsigned char isr; - isr = port->isr & 0x0E; - if (isr == ISR_Tx) { - (chan->callbacks->xmt_char)(chan); - } else if (isr == ISR_RxTO) { - (chan->callbacks->rcv_char)(chan, port->rhr); - } else if (isr == ISR_Rx) { - (chan->callbacks->rcv_char)(chan, port->rhr); + while ((isr = port->isr & 0x0E) != 0) { + if (isr == ISR_Tx) { + (chan->callbacks->xmt_char)(chan); + } else if (isr == ISR_RxTO) { + (chan->callbacks->rcv_char)(chan, port->rhr); + } else if (isr == ISR_Rx) { + (chan->callbacks->rcv_char)(chan, port->rhr); + } } cyg_drv_interrupt_unmask(pid_chan->int_num); }
