* [Qemu-devel] [AMD64] Possible problem with the DF flag during the SYSCALL instruction
@ 2008-03-20 10:44 Jakub Jermar
2008-03-20 21:46 ` [PATCH]Re: " Jakub Jermar
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jermar @ 2008-03-20 10:44 UTC (permalink / raw)
To: qemu-devel
Hi,
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?
Regards,
Jakub
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH]Re: [Qemu-devel] [AMD64] Possible problem with the DF flag during the SYSCALL instruction
2008-03-20 10:44 [Qemu-devel] [AMD64] Possible problem with the DF flag during the SYSCALL instruction Jakub Jermar
@ 2008-03-20 21:46 ` Jakub Jermar
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jermar @ 2008-03-20 21:46 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 798 bytes --]
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
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 382 bytes --]
--- 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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-03-20 21:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-20 10:44 [Qemu-devel] [AMD64] Possible problem with the DF flag during the SYSCALL instruction Jakub Jermar
2008-03-20 21:46 ` [PATCH]Re: " Jakub Jermar
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).