Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f583c29b authored by Gleb Natapov's avatar Gleb Natapov
Browse files

x86 emulator: fix parity calculation for AAD instruction

parent 7a905b14
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -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;
}