Commit 9a3ea654026c774364557eed172be30d735fe34f
1 parent
d4934d18
When -icount is used and a TB is recompiled due to an IO access
shortly after an IRQ has been raised, env->exception_index will still be set to EXCP_IRQ when cpu_io_recompile calls cpu_resume_from_signal. This causes qemu to repeat the IRQ trap, with disasterous consequences. I suspect this "works" most of the time because linux tends to drop back to svc mode before doing actual IRQ processing, and be fairly tolerant of spurious IRQ traps. Signed-off-by: Paul Brook <paul@codesourcery.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6100 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
1 additions
and
0 deletions
cpu-exec.c
@@ -86,6 +86,7 @@ void cpu_resume_from_signal(CPUState *env1, void *puc) | @@ -86,6 +86,7 @@ void cpu_resume_from_signal(CPUState *env1, void *puc) | ||
86 | #endif | 86 | #endif |
87 | } | 87 | } |
88 | #endif | 88 | #endif |
89 | + env->exception_index = -1; | ||
89 | longjmp(env->jmp_env, 1); | 90 | longjmp(env->jmp_env, 1); |
90 | } | 91 | } |
91 | 92 |