From: Ivanov Arkasha <ivanovrka...@gmail.com> Only one interrupt is in progress at the moment. It is only necessary to set to reset interrupt_request after all interrupts have been executed.
Signed-off-by: Ivanov Arkasha <ivanovrka...@gmail.com> Message-Id: <20210312164754.18437-1-arkaisp2...@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> Reviewed-by: Michael Rolnik <mrol...@gmail.com> --- target/avr/helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/avr/helper.c b/target/avr/helper.c index b4532de2523..35e10195940 100644 --- a/target/avr/helper.c +++ b/target/avr/helper.c @@ -49,7 +49,9 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request) cc->tcg_ops->do_interrupt(cs); env->intsrc &= env->intsrc - 1; /* clear the interrupt */ - cs->interrupt_request &= ~CPU_INTERRUPT_HARD; + if (!env->intsrc) { + cs->interrupt_request &= ~CPU_INTERRUPT_HARD; + } ret = true; } -- 2.26.2