Previous 199869 Revisions Next

r20986 Tuesday 12th February, 2013 at 15:43:07 UTC by Carl
i386: fix undefined shift behavior (nw)
[src/emu/cpu/i386]i386op16.c i386ops.c

trunk/src/emu/cpu/i386/i386ops.c
r20985r20986
11static UINT8 I386OP(shift_rotate8)(i386_state *cpustate, UINT8 modrm, UINT32 value, UINT8 shift)
22{
3   UINT8 src = value;
3   UINT32 src = value & 0xff;
44   UINT8 dst = value;
55
66   if( shift == 0 ) {
r20985r20986
115115         case 6:
116116            shift &= 31;
117117            dst = src << shift;
118            cpustate->CF = (src >> (8 - shift)) & 0x1;
118            cpustate->CF = (shift <= 8) && (src >> (8 - shift));
119119            SetSZPF8(dst);
120120            CYCLES_RM(cpustate,modrm, CYCLES_ROTATE_REG, CYCLES_ROTATE_MEM);
121121            break;
trunk/src/emu/cpu/i386/i386op16.c
r20985r20986
11static UINT16 I386OP(shift_rotate16)(i386_state *cpustate, UINT8 modrm, UINT32 value, UINT8 shift)
22{
3   UINT16 src = value;
3   UINT32 src = value & 0xffff;
44   UINT16 dst = value;
55
66   if( shift == 0 ) {
r20985r20986
114114         case 6:
115115            shift &= 31;
116116            dst = src << shift;
117            cpustate->CF = (src & (1 << (16-shift))) ? 1 : 0;
117            cpustate->CF = (shift <= 16) && (src & (1 << (16-shift)));
118118            SetSZPF16(dst);
119119            CYCLES_RM(cpustate,modrm, CYCLES_ROTATE_REG, CYCLES_ROTATE_MEM);
120120            break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team