summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-12 15:43:35 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-12 15:43:35 -0700
commit4aa18aa80022d9e4125faab8ff1f5123e159137d (patch)
tree015d03ce7a74fe09c857d61a5c604cc1638b744d /src/arch/x86
parent77c0e1d1102af4c023bcd4609022b1600cadfea5 (diff)
downloadgem5-4aa18aa80022d9e4125faab8ff1f5123e159137d.tar.xz
X86: Make Br never report itself as the last microop.
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/isa/microops/seqop.isa12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/arch/x86/isa/microops/seqop.isa b/src/arch/x86/isa/microops/seqop.isa
index 821afbe83..603f4458b 100644
--- a/src/arch/x86/isa/microops/seqop.isa
+++ b/src/arch/x86/isa/microops/seqop.isa
@@ -169,8 +169,7 @@ output decoder {{
}};
let {{
- class Br(X86Microop):
- className = "MicroBranch"
+ class SeqOp(X86Microop):
def __init__(self, target, flags=None):
self.target = target
if flags:
@@ -190,6 +189,15 @@ let {{
"cc" : self.cond}
return allocator
+ class Br(SeqOp):
+ className = "MicroBranch"
+
+ def getAllocator(self, *microFlags):
+ (is_micro, is_delayed, is_first, is_last) = microFlags
+ is_last = False
+ microFlags = (is_micro, is_delayed, is_first, is_last)
+ return super(Br, self).getAllocator(*microFlags)
+
iop = InstObjParams("br", "MicroBranchFlags", "SeqOpBase",
{"code": "nuIP = target",
"else_code": "nuIP = nuIP",