summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/insts/data64.isa
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2019-08-30 13:18:30 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-09-06 20:00:34 +0000
commit2d2f51f9897059cea36329aea20a585e0308ccad (patch)
tree7cbfc69414ad7f9677e0acb655e6af66bbe3dc14 /src/arch/arm/isa/insts/data64.isa
parentd1251cd2c64a6bdbca38b65a7a9dc533c54f7f5c (diff)
downloadgem5-2d2f51f9897059cea36329aea20a585e0308ccad.tar.xz
arch-arm: Use same template across all MSR inst
Change-Id: Ifb9f1db288e401761b71ccf426e370c475e5663f Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20622 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/arch/arm/isa/insts/data64.isa')
-rw-r--r--src/arch/arm/isa/insts/data64.isa33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/arch/arm/isa/insts/data64.isa b/src/arch/arm/isa/insts/data64.isa
index bb0334372..a2ffb9f5a 100644
--- a/src/arch/arm/isa/insts/data64.isa
+++ b/src/arch/arm/isa/insts/data64.isa
@@ -330,15 +330,26 @@ let {{
if (fault != NoFault) return fault;
'''
- mrsCode = '''
+ msr_check_code = '''
+ MiscRegIndex flat_idx = (MiscRegIndex) xc->tcBase()->
+ flattenRegId(RegId(MiscRegClass, dest)).index();
+ CPSR cpsr = Cpsr;
+ ExceptionLevel el = (ExceptionLevel) (uint8_t) cpsr.el;
+ %s
+ ''' % (msrMrs64EnabledCheckCode % ('Write'),)
+
+ mrs_check_code = '''
MiscRegIndex flat_idx = (MiscRegIndex) xc->tcBase()->
flattenRegId(RegId(MiscRegClass, op1)).index();
CPSR cpsr = Cpsr;
ExceptionLevel el = (ExceptionLevel) (uint8_t) cpsr.el;
%s
- XDest = MiscOp1_ud;
''' % (msrMrs64EnabledCheckCode % ('Read'),)
+
+ mrsCode = mrs_check_code + '''
+ XDest = MiscOp1_ud;
+ '''
mrsIop = InstObjParams("mrs", "Mrs64", "RegMiscRegImmOp64",
mrsCode,
["IsSerializeBefore"])
@@ -354,15 +365,9 @@ let {{
XDest = cpsr;
''')
- msrCode = '''
- MiscRegIndex flat_idx = (MiscRegIndex) xc->tcBase()->
- flattenRegId(RegId(MiscRegClass, dest)).index();
- CPSR cpsr = Cpsr;
- ExceptionLevel el = (ExceptionLevel) (uint8_t) cpsr.el;
- %s
+ msrCode = msr_check_code + '''
MiscDest_ud = XOp1;
- ''' % (msrMrs64EnabledCheckCode % ('Write'),)
-
+ '''
msrIop = InstObjParams("msr", "Msr64", "MiscRegRegImmOp64",
msrCode,
["IsSerializeAfter", "IsNonSpeculative"])
@@ -378,14 +383,6 @@ let {{
CondCodesV = cpsr.v;
''')
- msr_check_code = '''
- MiscRegIndex flat_idx = (MiscRegIndex) xc->tcBase()->
- flattenRegId(RegId(MiscRegClass, dest)).index();
- CPSR cpsr = Cpsr;
- ExceptionLevel el = (ExceptionLevel) (uint8_t) cpsr.el;
- %s
- ''' % (msrMrs64EnabledCheckCode % ('Write'),)
-
msrdczva_ea_code = msr_check_code
msrdczva_ea_code += '''