|
@@ -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;
|
|
|
}
|