summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
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 /src/arch/x86/isa
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.
Diffstat (limited to 'src/arch/x86/isa')
-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);',