summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/insts/swap.isa
diff options
context:
space:
mode:
authorMatt Horsnell <Matt.Horsnell@arm.com>2011-02-23 15:10:49 -0600
committerMatt Horsnell <Matt.Horsnell@arm.com>2011-02-23 15:10:49 -0600
commitbb319a589e72c006269d6f82fdfa715cc3a6caaf (patch)
tree4a79a01fb6a2013d16d2ff34a140224dd06af9b7 /src/arch/arm/isa/insts/swap.isa
parent7391ea6de63578722d97c9169e60db5b06754137 (diff)
downloadgem5-bb319a589e72c006269d6f82fdfa715cc3a6caaf.tar.xz
ARM: Mark store conditionals as such.
Diffstat (limited to 'src/arch/arm/isa/insts/swap.isa')
-rw-r--r--src/arch/arm/isa/insts/swap.isa13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/arch/arm/isa/insts/swap.isa b/src/arch/arm/isa/insts/swap.isa
index d924f3029..6a6ac837c 100644
--- a/src/arch/arm/isa/insts/swap.isa
+++ b/src/arch/arm/isa/insts/swap.isa
@@ -46,7 +46,7 @@ let {{
decConstBase = 'Swap'
def __init__(self, name, Name, eaCode,
- preAccCode, postAccCode, memFlags):
+ preAccCode, postAccCode, memFlags, instFlags = []):
super(SwapInst, self).__init__()
self.name = name
self.Name = Name
@@ -54,6 +54,7 @@ let {{
self.preAccCode = preAccCode
self.postAccCode = postAccCode
self.memFlags = memFlags
+ self.instFlags = instFlags
def emit(self):
global header_output, decoder_output, exec_output
@@ -61,12 +62,10 @@ let {{
"preacc_code": self.preAccCode,
"postacc_code": self.postAccCode }
codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
-
(newHeader,
newDecoder,
newExec) = self.fillTemplates(self.name, self.Name, codeBlobs,
- self.memFlags,
- ['IsStoreConditional'],
+ self.memFlags, self.instFlags,
base = 'Swap')
header_output += newHeader
decoder_output += newDecoder
@@ -77,12 +76,14 @@ let {{
'Dest = cSwap((uint32_t)memData, ((CPSR)Cpsr).e);',
['Request::MEM_SWAP',
'ArmISA::TLB::AlignWord',
- 'ArmISA::TLB::MustBeOne']).emit()
+ 'ArmISA::TLB::MustBeOne'],
+ ['IsStoreConditional']).emit()
SwapInst('swpb', 'Swpb', 'EA = Base;',
'Mem.ub = cSwap(Op1.ub, ((CPSR)Cpsr).e);',
'Dest.ub = cSwap((uint8_t)memData, ((CPSR)Cpsr).e);',
['Request::MEM_SWAP',
'ArmISA::TLB::AlignByte',
- 'ArmISA::TLB::MustBeOne']).emit()
+ 'ArmISA::TLB::MustBeOne'],
+ ['IsStoreConditional']).emit()
}};