summaryrefslogtreecommitdiffstats
path: root/target/avr/helper.c
diff options
context:
space:
mode:
authorPeter Maydell2021-03-15 17:59:55 +0100
committerPeter Maydell2021-03-15 17:59:55 +0100
commite7c6a8cf9f5c82aa152273e1c9e80d07b1b0c32c (patch)
tree14751fa969950e968a7d409917ad51d4ba5e4c16 /target/avr/helper.c
parentMerge remote-tracking branch 'remotes/bkoppelmann2/tags/pull-tricore-20210314... (diff)
parenttarget/avr: Fix interrupt execution (diff)
downloadqemu-e7c6a8cf9f5c82aa152273e1c9e80d07b1b0c32c.tar.gz
qemu-e7c6a8cf9f5c82aa152273e1c9e80d07b1b0c32c.tar.xz
qemu-e7c6a8cf9f5c82aa152273e1c9e80d07b1b0c32c.zip
Merge remote-tracking branch 'remotes/philmd/tags/avr-20210315' into staging
AVR patches queue - Only reset 'interrupt_request' mask once all interrupts executed - Documentation and typo fixes # gpg: Signature made Sun 14 Mar 2021 23:45:34 GMT # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full] # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * remotes/philmd/tags/avr-20210315: target/avr: Fix interrupt execution target/avr: Fix some comment spelling errors hw/avr/arduino: List board schematic links hw/misc/led: Add yellow LED Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/avr/helper.c')
-rw-r--r--target/avr/helper.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/target/avr/helper.c b/target/avr/helper.c
index 65880b9928..35e1019594 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;
}
@@ -98,7 +100,7 @@ int avr_cpu_memory_rw_debug(CPUState *cs, vaddr addr, uint8_t *buf,
hwaddr avr_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
{
- return addr; /* I assume 1:1 address correspondance */
+ return addr; /* I assume 1:1 address correspondence */
}
bool avr_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
@@ -299,7 +301,7 @@ void helper_outb(CPUAVRState *env, uint32_t port, uint32_t data)
}
/*
- * this function implements LD instruction when there is a posibility to read
+ * this function implements LD instruction when there is a possibility to read
* from a CPU register
*/
target_ulong helper_fullrd(CPUAVRState *env, uint32_t addr)
@@ -323,7 +325,7 @@ target_ulong helper_fullrd(CPUAVRState *env, uint32_t addr)
}
/*
- * this function implements ST instruction when there is a posibility to write
+ * this function implements ST instruction when there is a possibility to write
* into a CPU register
*/
void helper_fullwr(CPUAVRState *env, uint32_t data, uint32_t addr)