I'm grepping the tree for "} if" lines... I'm confident that these were intended as "else if", compare the corresponding ror_* functions. Also, it doesn't actually change the result.
ok? Index: sys/dev/x86emu/x86emu.c =================================================================== RCS file: /cvs/src/sys/dev/x86emu/x86emu.c,v retrieving revision 1.10 diff -u -p -r1.10 x86emu.c --- sys/dev/x86emu/x86emu.c 25 Nov 2018 19:52:08 -0000 1.10 +++ sys/dev/x86emu/x86emu.c 1 Apr 2019 03:50:28 -0000 @@ -7009,7 +7009,7 @@ rol_byte(struct x86emu *emu, uint8_t d, CONDITIONAL_SET_FLAG(s == 1 && XOR2((res & 0x1) + ((res >> 6) & 0x2)), F_OF); - } if (s != 0) { + } else if (s != 0) { /* set the new carry flag, Note that it is the low order bit * of the result!!! */ CONDITIONAL_SET_FLAG(res & 0x1, F_CF); @@ -7035,7 +7035,7 @@ rol_word(struct x86emu *emu, uint16_t d, CONDITIONAL_SET_FLAG(s == 1 && XOR2((res & 0x1) + ((res >> 14) & 0x2)), F_OF); - } if (s != 0) { + } else if (s != 0) { /* set the new carry flag, Note that it is the low order bit * of the result!!! */ CONDITIONAL_SET_FLAG(res & 0x1, F_CF); @@ -7061,7 +7061,7 @@ rol_long(struct x86emu *emu, uint32_t d, CONDITIONAL_SET_FLAG(s == 1 && XOR2((res & 0x1) + ((res >> 30) & 0x2)), F_OF); - } if (s != 0) { + } else if (s != 0) { /* set the new carry flag, Note that it is the low order bit * of the result!!! */ CONDITIONAL_SET_FLAG(res & 0x1, F_CF); -- Christian "naddy" Weisgerber na...@mips.inka.de