summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2018-04-03 17:36:12 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2018-06-28 19:05:36 +0200
commitdf2518aa587a0157bbfbc635fe47295629d9914a (patch)
treeebf0ebe6eb17c09f492e0be8017f467a3b0ac438
parent02f7fd25a446a220905c2e5cb0fc3655d7f63b29 (diff)
downloadqemu-df2518aa587a0157bbfbc635fe47295629d9914a.zip
target-i386: Allow interrupt injection after STGI
We need to terminate the translation block after STGI so that pending interrupts can be injected. This fixes pending NMI injection for Jailhouse which uses "stgi; clgi" to open a brief injection window. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Message-Id: <37939b244dda0e9cccf96ce50f2b15df1e48315d.1522769774.git.jan.kiszka@web.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--target/i386/translate.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/target/i386/translate.c b/target/i386/translate.c
index c91849417b..07d185e7b6 100644
--- a/target/i386/translate.c
+++ b/target/i386/translate.c
@@ -7444,8 +7444,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
break;
}
gen_update_cc_op(s);
- gen_jmp_im(pc_start - s->cs_base);
gen_helper_stgi(cpu_env);
+ gen_jmp_im(s->pc - s->cs_base);
+ gen_eob(s);
break;
case 0xdd: /* CLGI */