Reported-by: Paolo Bonzini <[email protected]>
Suggested-by: Paolo Bonzini <[email protected]>
Signed-off-by: Gleb Natapov <[email protected]>

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 2b11318..a335cc6 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2995,14 +2995,11 @@ static int em_aad(struct x86_emulate_ctxt *ctxt)
 
        ctxt->dst.val = (ctxt->dst.val & 0xffff0000) | al;
 
-       ctxt->eflags &= ~(X86_EFLAGS_PF | X86_EFLAGS_SF | X86_EFLAGS_ZF);
-
-       if (!al)
-               ctxt->eflags |= X86_EFLAGS_ZF;
-       if (!(al & 1))
-               ctxt->eflags |= X86_EFLAGS_PF;
-       if (al & 0x80)
-               ctxt->eflags |= X86_EFLAGS_SF;
+       /* Set PF, ZF, SF */
+       ctxt->src.type = OP_IMM;
+       ctxt->src.val = 0;
+       ctxt->src.bytes = 1;
+       fastop(ctxt, em_or);
 
        return X86EMUL_CONTINUE;
 }
--
                        Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to