diff options
-rw-r--r-- | src/devices/cpu/i960/i960.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp index 40bda560f40..7d31ad031bf 100644 --- a/src/devices/cpu/i960/i960.cpp +++ b/src/devices/cpu/i960/i960.cpp @@ -1157,7 +1157,7 @@ void i960_cpu_device::execute_op(uint32_t opcode) m_icount--; t1 = get_1_ri(opcode); t2 = get_2_ri(opcode); - set_ri(opcode, t1 >= 32 ? 0 : ((int32_t)t2) << t1); + set_ri(opcode, (t2 & 0x80000000) | (t1 >= 32 ? 0 : (t2<<t1) & 0x7fffffff)); // sign is preserved break; default: |