Fix a newly introduced bug where the predecoder wasn't picking up all the displacement.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 20 Jun 2007 19:06:08 +0000 (19:06 +0000)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 20 Jun 2007 19:06:08 +0000 (19:06 +0000)
--HG--
extra : convert_revision : 9202c11ee187458adcd85ba616b7f7f4bdd4eec1

src/arch/x86/predecoder.cc

index bbbad7dd0cec3f46356d9b5daa43e40016e9b1ea..49f76699b384a0019e5efcd0d25607b91081f44e 100644 (file)
@@ -277,7 +277,8 @@ namespace X86ISA
                 displacementSize = 0;
         } else {
             //figure out 32/64 bit displacement size
-            if(modRM.mod == 0 && modRM.rm == 4 || modRM.mod == 2)
+            if(modRM.mod == 0 && (modRM.rm == 4 || modRM.rm == 5)
+                    || modRM.mod == 2)
                 displacementSize = 4;
             else if(modRM.mod == 1)
                 displacementSize = 1;