qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] i386: fix read/write cr with icount option
@ 2017-05-19  9:36 Mihail Abakumov
  2017-05-19  9:59 ` Paolo Bonzini
  0 siblings, 1 reply; 3+ messages in thread
From: Mihail Abakumov @ 2017-05-19  9:36 UTC (permalink / raw)
  To: Qemu Devel; +Cc: Pavel Dovgalyuk, Pbonzini, Richard Henderson, Eduardo Habkost

Running Windows with icount causes a crash in instruction of write cr. 
This patch fixes it.

Reading and writing cr cause an icount read because there are called 
cpu_get_apic_tpr and cpu_set_apic_tpr functions. So, there is need 
gen_io_start()/gen_io_end() calls.

---
  target/i386/translate.c | 12 ++++++++++++
  1 file changed, 12 insertions(+)

diff --git a/target/i386/translate.c b/target/i386/translate.c
index 06d8833..3b009bd 100644
--- a/target/i386/translate.c
+++ b/target/i386/translate.c
@@ -7907,14 +7907,26 @@ static target_ulong disas_insn(CPUX86State *env, 
DisasContext *s,
                  gen_update_cc_op(s);
                  gen_jmp_im(pc_start - s->cs_base);
                  if (b & 2) {
+                    if (s->tb->cflags & CF_USE_ICOUNT) {
+                        gen_io_start();
+                    }
                      gen_op_mov_v_reg(ot, cpu_T0, rm);
                      gen_helper_write_crN(cpu_env, tcg_const_i32(reg),
                                           cpu_T0);
+                    if (s->tb->cflags & CF_USE_ICOUNT) {
+                        gen_io_end();
+                    }
                      gen_jmp_im(s->pc - s->cs_base);
                      gen_eob(s);
                  } else {
+                    if (s->tb->cflags & CF_USE_ICOUNT) {
+                        gen_io_start();
+                    }
                      gen_helper_read_crN(cpu_T0, cpu_env, 
tcg_const_i32(reg));
                      gen_op_mov_reg_v(ot, rm, cpu_T0);
+                    if (s->tb->cflags & CF_USE_ICOUNT) {
+                        gen_io_end();
+                    }
                  }
                  break;
              default:
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-05-19 10:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-19  9:36 [Qemu-devel] [PATCH] i386: fix read/write cr with icount option Mihail Abakumov
2017-05-19  9:59 ` Paolo Bonzini
2017-05-19 10:41   ` Mihail Abakumov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).