qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] target/i386: fix translation for icount mode


From: Pavel Dovgalyuk
Subject: [Qemu-devel] [PATCH] target/i386: fix translation for icount mode
Date: Thu, 20 Sep 2018 10:17:03 +0300
User-agent: StGit/0.17.1-dirty

This patch fixes the checking of boundary crossing instructions.
In icount mode only first instruction of the block may cross
the page boundary to keep the translation deterministic.
These conditions already existed, but compared the wrong variable.

Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
 target/i386/translate.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/target/i386/translate.c b/target/i386/translate.c
index 1f9d1d9..c946bc4 100644
--- a/target/i386/translate.c
+++ b/target/i386/translate.c
@@ -8510,10 +8510,10 @@ static void i386_tr_translate_insn(DisasContextBase 
*dcbase, CPUState *cpu)
            chance to happen */
         dc->base.is_jmp = DISAS_TOO_MANY;
     } else if ((tb_cflags(dc->base.tb) & CF_USE_ICOUNT)
-               && ((dc->base.pc_next & TARGET_PAGE_MASK)
-                   != ((dc->base.pc_next + TARGET_MAX_INSN_SIZE - 1)
+               && ((pc_next & TARGET_PAGE_MASK)
+                   != ((pc_next + TARGET_MAX_INSN_SIZE - 1)
                        & TARGET_PAGE_MASK)
-                   || (dc->base.pc_next & ~TARGET_PAGE_MASK) == 0)) {
+                   || (pc_next & ~TARGET_PAGE_MASK) == 0)) {
         /* Do not cross the boundary of the pages in icount mode,
            it can cause an exception. Do it only when boundary is
            crossed by the first instruction in the block.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]