From 2a8b0b397f4154d400c2c5629cb7106c4ae90276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Strohh=C3=A4cker?= Date: Sat, 9 Oct 2010 13:49:48 +0000 Subject: [PATCH] fix dimul flags calculation for corner cases (thanks to bavi) Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3649 --- src/cpu/instructions.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cpu/instructions.h b/src/cpu/instructions.h index 1696997c..da82ec4a 100644 --- a/src/cpu/instructions.h +++ b/src/cpu/instructions.h @@ -798,7 +798,7 @@ Bits res=((Bit16s)op2) * ((Bit16s)op3); \ save(op1,res & 0xffff); \ FillFlagsNoCFOF(); \ - if ((res> -32768) && (res<32767)) { \ + if ((res>= -32768) && (res<=32767)) { \ SETFLAGBIT(CF,false);SETFLAGBIT(OF,false); \ } else { \ SETFLAGBIT(CF,true);SETFLAGBIT(OF,true); \ @@ -810,8 +810,8 @@ Bit64s res=((Bit64s)((Bit32s)op2))*((Bit64s)((Bit32s)op3)); \ save(op1,(Bit32s)res); \ FillFlagsNoCFOF(); \ - if ((res>-((Bit64s)(2147483647)+1)) && \ - (res<(Bit64s)2147483647)) { \ + if ((res>=-((Bit64s)(2147483647)+1)) && \ + (res<=(Bit64s)2147483647)) { \ SETFLAGBIT(CF,false);SETFLAGBIT(OF,false); \ } else { \ SETFLAGBIT(CF,true);SETFLAGBIT(OF,true); \