aboutsummaryrefslogtreecommitdiff
path: root/target/i386/translate.c
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 /target/i386/translate.c
parent02f7fd25a446a220905c2e5cb0fc3655d7f63b29 (diff)
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>
Diffstat (limited to 'target/i386/translate.c')
-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 */