summaryrefslogtreecommitdiff
path: root/src/cpu/o3/decode_impl.hh
diff options
context:
space:
mode:
authorDam Sunwoo <dam.sunwoo@arm.com>2014-04-23 05:18:18 -0400
committerDam Sunwoo <dam.sunwoo@arm.com>2014-04-23 05:18:18 -0400
commit84f8fe637cbf15c403f39aaa10c0ea66ace6083d (patch)
tree9655f3537e6e8c05806b78b24cfd48cc623100f6 /src/cpu/o3/decode_impl.hh
parentc9071ff95e5835e100e642ceba99a1bce8c3d02d (diff)
downloadgem5-84f8fe637cbf15c403f39aaa10c0ea66ace6083d.tar.xz
cpu: Add O3 CPU width checks
O3CPU has a compile-time maximum width set in o3/impl.hh, but checking the configuration against this limit was not implemented anywhere except for fetch. Configuring a wider pipe than the limit can silently cause various issues during the simulation. This patch adds the proper checking in the constructor of the various pipeline stages.
Diffstat (limited to 'src/cpu/o3/decode_impl.hh')
-rw-r--r--src/cpu/o3/decode_impl.hh5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cpu/o3/decode_impl.hh b/src/cpu/o3/decode_impl.hh
index c78e7f211..c66f488a5 100644
--- a/src/cpu/o3/decode_impl.hh
+++ b/src/cpu/o3/decode_impl.hh
@@ -68,6 +68,11 @@ DefaultDecode<Impl>::DefaultDecode(O3CPU *_cpu, DerivO3CPUParams *params)
decodeWidth(params->decodeWidth),
numThreads(params->numThreads)
{
+ if (decodeWidth > Impl::MaxWidth)
+ fatal("decodeWidth (%d) is larger than compiled limit (%d),\n"
+ "\tincrease MaxWidth in src/cpu/o3/impl.hh\n",
+ decodeWidth, static_cast<int>(Impl::MaxWidth));
+
// @todo: Make into a parameter
skidBufferMax = (fetchToDecodeDelay + 1) * params->fetchWidth;
}