summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-04-19 04:55:58 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-04-19 04:55:58 -0700
commitd90456a4868baa931ca089a471c2b9230830d848 (patch)
treee278446f1ec1b05566ff66db4c584def77d6c437
parentd2554ff0304af0d4b365894026b702b5714385d6 (diff)
downloadgem5-d90456a4868baa931ca089a471c2b9230830d848.tar.xz
X86: Implement the stul microop.
This microop does a store and unlocks the requested address. The RISC86 microop ISA doesn't seem to have an equivalent to this, so I'm guessing that the store following an ldstl is automatically unlocking. We don't do it this way for performance reasons since the behavior is the same.
-rw-r--r--src/arch/x86/isa/microops/ldstop.isa2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/arch/x86/isa/microops/ldstop.isa b/src/arch/x86/isa/microops/ldstop.isa
index 5df423ea9..f16a3b488 100644
--- a/src/arch/x86/isa/microops/ldstop.isa
+++ b/src/arch/x86/isa/microops/ldstop.isa
@@ -478,6 +478,8 @@ let {{
microopClasses[name] = StoreOp
defineMicroStoreOp('St', 'Mem = pick(Data, 2, dataSize);')
+ defineMicroStoreOp('Stul', 'Mem = pick(Data, 2, dataSize);',
+ mem_flags="Request::LOCKED")
defineMicroStoreOp('Stfp', 'Mem = FpData.uqw;')
defineMicroStoreOp('Stupd', 'Mem = pick(Data, 2, dataSize);',
'Base = merge(Base, EA - SegBase, addressSize);',