diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-08-23 09:44:19 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-08-23 09:44:19 -0700 |
commit | 69fc2af00600ced942d81dba082d9780e5325c9e (patch) | |
tree | 7c06e5560c737dec0fadb1df9638b0d33280d73b | |
parent | 5a1dbe4d99e9aad0f5c9002707a323ef8d6dfb8a (diff) | |
download | gem5-69fc2af00600ced942d81dba082d9780e5325c9e.tar.xz |
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.
-rw-r--r-- | src/arch/x86/isa/macroop.isa | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/arch/x86/isa/macroop.isa b/src/arch/x86/isa/macroop.isa index d6571c7e6..f05015834 100644 --- a/src/arch/x86/isa/macroop.isa +++ b/src/arch/x86/isa/macroop.isa @@ -139,12 +139,15 @@ let {{ 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 @@ let {{ //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 @@ let {{ 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: |