* dv-mn103cpu.c (deliver_mn103cpu_interrupt): Stop loss of succeeding
authorAndrew Cagney <cagney@redhat.com>
Thu, 26 Mar 1998 14:00:18 +0000 (14:00 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 26 Mar 1998 14:00:18 +0000 (14:00 +0000)
interrupts, clear pending_handler when the handler isn't re-scheduled.

sim/mn10300/ChangeLog
sim/mn10300/dv-mn103cpu.c

index 92b20b82926a0aa0b65057798deccba973721919..b48f2e56dc3b55caa9b67f7449aa810a72dda4bc 100644 (file)
@@ -1,3 +1,9 @@
+Fri Mar 27 00:56:40 1998  Andrew Cagney  <cagney@b1.cygnus.com>
+
+       * dv-mn103cpu.c (deliver_mn103cpu_interrupt): Stop loss of
+       succeeding interrupts, clear pending_handler when the handler
+       isn't re-scheduled.
+
 Thu Mar 26 10:11:01 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>
 
        * Makefile.in (tmp-igen):  Prefix all usage of move-if-change
index 87c684e3a167270a0495c46461f6d6349101bed5..89b60b83053bc418227d6c80113fc43760c31c27 100644 (file)
@@ -255,14 +255,20 @@ deliver_mn103cpu_interrupt (struct hw *me,
                 (long) CIA_GET (cpu), (unsigned) PSW, (long) SP));
     }
 
-  /* As long as there is the potential need to deliver an interrupt we
-     keep rescheduling this routine. */
   if (controller->pending_level < 7) /* FIXME */
     {
+      /* As long as there is the potential need to deliver an
+        interrupt we keep rescheduling this routine. */
       if (controller->pending_handler != NULL)
        controller->pending_handler =
          hw_event_queue_schedule (me, 1, deliver_mn103cpu_interrupt, NULL);
     }
+  else
+    {
+      /* Don't bother re-scheduling the interrupt handler as there is
+         nothing to deliver */
+      controller->pending_handler = NULL;
+    }
 
 }