qemu-devel
[Top][All Lists]
Advanced

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

[PATCH]Re: [Qemu-devel] [AMD64] Possible problem with the DF flag during


From: Jakub Jermar
Subject: [PATCH]Re: [Qemu-devel] [AMD64] Possible problem with the DF flag during the SYSCALL instruction
Date: Thu, 20 Mar 2008 22:46:10 +0100
User-agent: Thunderbird 2.0.0.12 (X11/20080227)

Jakub Jermar wrote:
yesterday I tried to mask off the DF flag from the RFLAGS register during the SYSCALL instruction by specifying this bit in the SFMASK MSR register while running HelenOS.

With QEMU, this didn't work (but it worked in Simics, for instance), so I suspect that there is something wrong with handling RFLAGS.DF during SYSCALL. Anyone wants to have a look?

I have looked into the problem a little more and found out that the
culprit here is probably a missing update of the DF variable in the
helper_syscall() function, in target-i386/helper.c.  See the attached
patch.

The patch fixes the problem for me, but is probably not complete (i.e.
there might be other places that need a similar treatment), but I can't
really tell since I am not a qemu expert.

Jakub
--- helper.c    2008-01-06 20:38:45.000000000 +0100
+++ helper.c.new        2008-03-20 22:39:17.000000000 +0100
@@ -1008,6 +1008,7 @@
                                DESC_S_MASK |
                                DESC_W_MASK | DESC_A_MASK);
         env->eflags &= ~env->fmask;
+       DF = 1 - (2 * ((env->eflags >> 10) & 1));
         if (code64)
             env->eip = env->lstar;
         else

reply via email to

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