Message ID | 20220826205518.2339352-3-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/avr: Fix skips vs interrupts | expand |
Reviewed-by: Michael Rolnik <mrolnik@gmail.com> On Fri, Aug 26, 2022 at 11:55 PM Richard Henderson < richard.henderson@linaro.org> wrote: > We cannot deliver two interrupts simultaneously; > the first interrupt handler must execute first. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/avr/helper.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/target/avr/helper.c b/target/avr/helper.c > index 9614ccf3e4..34f1cbffb2 100644 > --- a/target/avr/helper.c > +++ b/target/avr/helper.c > @@ -28,7 +28,6 @@ > > bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request) > { > - bool ret = false; > AVRCPU *cpu = AVR_CPU(cs); > CPUAVRState *env = &cpu->env; > > @@ -38,8 +37,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int > interrupt_request) > avr_cpu_do_interrupt(cs); > > cs->interrupt_request &= ~CPU_INTERRUPT_RESET; > - > - ret = true; > + return true; > } > } > if (interrupt_request & CPU_INTERRUPT_HARD) { > @@ -52,11 +50,10 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int > interrupt_request) > if (!env->intsrc) { > cs->interrupt_request &= ~CPU_INTERRUPT_HARD; > } > - > - ret = true; > + return true; > } > } > - return ret; > + return false; > } > > void avr_cpu_do_interrupt(CPUState *cs) > -- > 2.34.1 > >
diff --git a/target/avr/helper.c b/target/avr/helper.c index 9614ccf3e4..34f1cbffb2 100644 --- a/target/avr/helper.c +++ b/target/avr/helper.c @@ -28,7 +28,6 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request) { - bool ret = false; AVRCPU *cpu = AVR_CPU(cs); CPUAVRState *env = &cpu->env; @@ -38,8 +37,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request) avr_cpu_do_interrupt(cs); cs->interrupt_request &= ~CPU_INTERRUPT_RESET; - - ret = true; + return true; } } if (interrupt_request & CPU_INTERRUPT_HARD) { @@ -52,11 +50,10 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request) if (!env->intsrc) { cs->interrupt_request &= ~CPU_INTERRUPT_HARD; } - - ret = true; + return true; } } - return ret; + return false; } void avr_cpu_do_interrupt(CPUState *cs)
We cannot deliver two interrupts simultaneously; the first interrupt handler must execute first. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/avr/helper.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)