changeset 3a6468fa514f in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=3a6468fa514f
description:
X86: Add a .serializing directive that makes a macroop serializing.
This directive really just tells the macroop to set IsSerializing and
IsSerializeAfter on its final microop.
diffstat:
src/arch/x86/isa/macroop.isa | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diffs (38 lines):
diff -r 3d8a23caa1ef -r 3a6468fa514f src/arch/x86/isa/macroop.isa
--- a/src/arch/x86/isa/macroop.isa Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/macroop.isa Mon Aug 23 09:44:19 2010 -0700
@@ -139,12 +139,15 @@
self.adjust_imm += val
def adjustDisp(self, val):
self.adjust_disp += val
+ def serializing(self):
+ self.serializing = True
def __init__(self, name):
super(X86Macroop, self).__init__(name)
self.directives = {
"adjust_env" : self.setAdjustEnv,
"adjust_imm" : self.adjustImm,
- "adjust_disp" : self.adjustDisp
+ "adjust_disp" : self.adjustDisp,
+ "serializing" : self.serializing
}
self.declared = False
self.adjust_env = ""
@@ -159,6 +162,7 @@
//This is to pacify gcc in case the displacement isn't used.
adjustedDisp = adjustedDisp;
'''
+ self.serializing = False
def getAllocator(self, env):
return "new X86Macroop::%s(machInst, %s)" % \
(self.name, env.getAllocator())
@@ -188,6 +192,9 @@
flags = ["IsMicroop"]
if micropc == numMicroops - 1:
flags.append("IsLastMicroop")
+ if self.serializing:
+ flags.append("IsSerializing")
+ flags.append("IsSerializeAfter")
else:
flags.append("IsDelayedCommit")
if micropc == 0:
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev