cpu: Fixed a bug on where to fetch the next instruction from
authorDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
committerDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
Figure out if the next instruction to fetch comes from the micro-op ROM
or not. Otherwise, wrong instructions may be fetched.

src/cpu/o3/fetch_impl.hh

index a462d92517ccf5507204e4c9d34b0697bca2895a..1d0cfd1379781da7e71420999f650e8e2dd8ba48 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2010-2014 ARM Limited
+ * Copyright (c) 2012-2013 AMD
  * All rights reserved.
  *
  * The license below extends only to copyright in the software and shall
@@ -1371,6 +1372,10 @@ DefaultFetch<Impl>::fetch(bool &status_change)
         } while ((curMacroop || decoder[tid]->instReady()) &&
                  numInst < fetchWidth &&
                  fetchQueue[tid].size() < fetchQueueSize);
+
+        // Re-evaluate whether the next instruction to fetch is in micro-op ROM
+        // or not.
+        inRom = isRomMicroPC(thisPC.microPC());
     }
 
     if (predictedBranch) {