From 1b756ba6d58c63dfdb588fa900208f03f7ec8567 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Thu, 26 Mar 1998 14:00:18 +0000 Subject: * dv-mn103cpu.c (deliver_mn103cpu_interrupt): Stop loss of succeeding interrupts, clear pending_handler when the handler isn't re-scheduled. --- sim/mn10300/ChangeLog | 6 ++++++ sim/mn10300/dv-mn103cpu.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'sim') 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 + + * 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 * 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; + } } -- cgit v1.1