arch-arm: Use same template across all MSR inst
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 30 Aug 2019 12:18:30 +0000 (13:18 +0100)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 6 Sep 2019 20:00:34 +0000 (20:00 +0000)
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>
src/arch/arm/isa/insts/data64.isa

index bb0334372e3a5b9b7a03cfc51f33e62aa0558f4e..a2ffb9f5a1012ae0ab13ba114a6de545a9d42724 100644 (file)
@@ -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 += '''