summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-12 23:29:10 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-12 23:29:10 -0700
commit3c4567f2a65e0809d84d85a3fd82a294a1b0cb96 (patch)
tree714aaa21efa0c14b2660053e4a8da9970fc9ae85
parent33ebd04474a1042e5cce585802481b6e95a4e92e (diff)
downloadgem5-3c4567f2a65e0809d84d85a3fd82a294a1b0cb96.tar.xz
X86: Set the delayed commit flag in x86 microops appropriately.
-rw-r--r--src/arch/x86/isa/macroop.isa6
-rw-r--r--src/arch/x86/isa/microops/base.isa2
-rw-r--r--src/arch/x86/isa/microops/seqop.isa2
3 files changed, 6 insertions, 4 deletions
diff --git a/src/arch/x86/isa/macroop.isa b/src/arch/x86/isa/macroop.isa
index b851a92c7..7d94dd95c 100644
--- a/src/arch/x86/isa/macroop.isa
+++ b/src/arch/x86/isa/macroop.isa
@@ -220,11 +220,11 @@ let {{
allocMicroops = ''
micropc = 0
for op in self.microops:
+ isLast = (micropc == numMicroops - 1)
allocMicroops += \
"microops[%d] = %s;\n" % \
- (micropc, op.getAllocator(True, False,
- micropc == 0,
- micropc == numMicroops - 1))
+ (micropc, op.getAllocator(True, not isLast,
+ micropc == 0, isLast))
micropc += 1
iop = InstObjParams(self.name, self.name, "Macroop",
{"code" : "", "num_microops" : numMicroops,
diff --git a/src/arch/x86/isa/microops/base.isa b/src/arch/x86/isa/microops/base.isa
index 057d237ad..2b73cf563 100644
--- a/src/arch/x86/isa/microops/base.isa
+++ b/src/arch/x86/isa/microops/base.isa
@@ -118,7 +118,7 @@ let {{
def getGeneratorDef(self, micropc):
return self.generatorTemplate % \
(self.className, micropc, \
- self.getAllocator(True, False, False, False))
+ self.getAllocator(True, True, False, False))
def getGenerator(self, micropc):
return self.generatorNameTemplate % (self.className, micropc)
diff --git a/src/arch/x86/isa/microops/seqop.isa b/src/arch/x86/isa/microops/seqop.isa
index d3c7bf096..f03094f66 100644
--- a/src/arch/x86/isa/microops/seqop.isa
+++ b/src/arch/x86/isa/microops/seqop.isa
@@ -195,6 +195,7 @@ let {{
def getAllocator(self, *microFlags):
(is_micro, is_delayed, is_first, is_last) = microFlags
is_last = False
+ is_delayed = True
microFlags = (is_micro, is_delayed, is_first, is_last)
return super(Br, self).getAllocator(*microFlags)
@@ -214,6 +215,7 @@ let {{
def getAllocator(self, *microFlags):
(is_micro, is_delayed, is_first, is_last) = microFlags
is_last = True
+ is_delayed = False
microFlags = (is_micro, is_delayed, is_first, is_last)
return super(Eret, self).getAllocator(*microFlags)