{
raw_mov_l_rr(tmp,s);
raw_lahf(s); /* flags into ah */
+ SETOr(X86_AL); /* V flag into al */
raw_and_l_ri(s,0xffffbfff);
raw_and_l_ri(tmp,0x00004000);
raw_xor_l_ri(tmp,0x00004000);
raw_or_l(s,tmp);
+ raw_cmp_b_ri(X86_AL,-127); /* set V */
raw_sahf(s);
}
break;
}
comprintf("\tlive_flags();\n");
- comprintf("\tif (needed_flags&FLAG_Z) {\n"
- "\tcmov_l_rr(zero,one,%d);\n"
- "\tset_zero(zero, one);\n" /* No longer need one */
- "\tlive_flags();\n"
- "\t}\n",NATIVE_CC_NE);
+ comprintf("\tif (needed_flags&FLAG_Z) {\n");
+ comprintf("\tcmov_l_rr(zero,one,%d);\n", NATIVE_CC_NE);
+ comprintf("\tset_zero(zero, one);\n"); /* No longer need one */
+ comprintf("\tlive_flags();\n");
+ comprintf("\t}\n");
comprintf("\tend_needflags();\n");
- duplicate_carry();
+ duplicate_carry();
comprintf("if (!(needed_flags & FLAG_CZNV)) dont_care_flags();\n");
return;
}