summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/insts/data.isa
diff options
context:
space:
mode:
authorMitch Hayenga <mitch.hayenga@arm.com>2016-02-29 19:13:13 -0600
committerMitch Hayenga <mitch.hayenga@arm.com>2016-02-29 19:13:13 -0600
commitc0d19391d423d16c5dc587c4946e8395b9c0db91 (patch)
tree0f232ea2582d733467413ed590d3ec53c53f22d2 /src/arch/arm/isa/insts/data.isa
parentaa674268e97810c50110d0418e13d6ec96217689 (diff)
downloadgem5-c0d19391d423d16c5dc587c4946e8395b9c0db91.tar.xz
arm: Squash after returning from exceptions in v7
Properly done for the ERET instruction in v8, but not for v7. Many control register changes are only visible after explicit instruction synchronization barriers or exception entry/exit. This means mode changing instructions should squash any younger in-flight speculative instructions.
Diffstat (limited to 'src/arch/arm/isa/insts/data.isa')
-rw-r--r--src/arch/arm/isa/insts/data.isa6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/arch/arm/isa/insts/data.isa b/src/arch/arm/isa/insts/data.isa
index 881676496..df5a8b51e 100644
--- a/src/arch/arm/isa/insts/data.isa
+++ b/src/arch/arm/isa/insts/data.isa
@@ -273,10 +273,12 @@ let {{
'''
buildImmDataInst(mnem + 's', code, flagType,
suffix = "ImmPclr", buildCc = False,
- instFlags = ["IsSerializeAfter","IsNonSpeculative"])
+ instFlags = ["IsSerializeAfter","IsNonSpeculative",
+ "IsSquashAfter"])
buildRegDataInst(mnem + 's', code, flagType,
suffix = "RegPclr", buildCc = False,
- instFlags = ["IsSerializeAfter","IsNonSpeculative"])
+ instFlags = ["IsSerializeAfter","IsNonSpeculative",
+ "IsSquashAfter"])
buildDataInst("and", "Dest = resTemp = Op1 & secondOp;")
buildDataInst("eor", "Dest = resTemp = Op1 ^ secondOp;")