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);
 }