diff options
-rw-r--r-- | sim/mn10300/ChangeLog | 6 | ||||
-rw-r--r-- | sim/mn10300/dv-mn103cpu.c | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog index 92b20b8..b48f2e5 100644 --- a/sim/mn10300/ChangeLog +++ b/sim/mn10300/ChangeLog @@ -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 diff --git a/sim/mn10300/dv-mn103cpu.c b/sim/mn10300/dv-mn103cpu.c index 87c684e..89b60b8 100644 --- a/sim/mn10300/dv-mn103cpu.c +++ b/sim/mn10300/dv-mn103cpu.c @@ -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; + } } |