diff options
author | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-02-29 19:13:13 -0600 |
---|---|---|
committer | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-02-29 19:13:13 -0600 |
commit | c0d19391d423d16c5dc587c4946e8395b9c0db91 (patch) | |
tree | 0f232ea2582d733467413ed590d3ec53c53f22d2 /src/arch/arm/isa/insts/macromem.isa | |
parent | aa674268e97810c50110d0418e13d6ec96217689 (diff) | |
download | gem5-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/macromem.isa')
-rw-r--r-- | src/arch/arm/isa/insts/macromem.isa | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/arch/arm/isa/insts/macromem.isa b/src/arch/arm/isa/insts/macromem.isa index 8c1b26808..cc7366e2b 100644 --- a/src/arch/arm/isa/insts/macromem.isa +++ b/src/arch/arm/isa/insts/macromem.isa @@ -124,7 +124,7 @@ let {{ 'EA = URb + (up ? imm : -imm);', 'predicate_test': condPredicateTest}, ['IsMicroop','IsNonSpeculative', - 'IsSerializeAfter']) + 'IsSerializeAfter', 'IsSquashAfter']) microStrUopCode = "Mem = cSwap(URa_uw, ((CPSR)Cpsr).e);" microStrUopIop = InstObjParams('str_uop', 'MicroStrUop', @@ -668,7 +668,7 @@ let {{ {'code': microRetUopCode % 'URb', 'predicate_test': predicateTest}, ['IsMicroop', 'IsNonSpeculative', - 'IsSerializeAfter']) + 'IsSerializeAfter', 'IsSquashAfter']) setPCCPSRDecl = ''' CPSR cpsrOrCondCodes = URc; |