arch-power: Add time base instructions
authorSandipan Das <sandipan@linux.ibm.com>
Sat, 6 Feb 2021 11:52:27 +0000 (17:22 +0530)
committerSandipan Das <sandipan@linux.ibm.com>
Mon, 15 Feb 2021 08:32:38 +0000 (14:02 +0530)
This models a pseudo time base using the simulator ticks
and adds the following instructions.
  * Move From Time Base (mftb)
  * Move From Time Base Upper (mftbu)

Change-Id: Idb619ec3179b2a85925998282075bde8651c68c2
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
src/arch/power/insts/integer.cc
src/arch/power/isa/decoder.isa

index 115b8674fa041995c35554d90c443bbdb25244b9..c43791bc9fb85848e4cd743a8cb6bc00206987bb 100644 (file)
@@ -49,13 +49,17 @@ IntOp::generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const
                !myMnemonic.compare("mtxer") ||
                !myMnemonic.compare("mtlr")  ||
                !myMnemonic.compare("mtctr") ||
-               !myMnemonic.compare("mttar")) {
+               !myMnemonic.compare("mttar") ||
+               !myMnemonic.compare("mttb")  ||
+               !myMnemonic.compare("mttbu")) {
         printDest = false;
     } else if (!myMnemonic.compare("mfcr")  ||
                !myMnemonic.compare("mfxer") ||
                !myMnemonic.compare("mflr")  ||
                !myMnemonic.compare("mfctr") ||
-               !myMnemonic.compare("mftar")) {
+               !myMnemonic.compare("mftar") ||
+               !myMnemonic.compare("mftb")  ||
+               !myMnemonic.compare("mftbu")) {
         printSrcs = false;
     }
 
index 4ecee98cdcf3e9ced48415e4b219e1a5a8805179..aeee29a034289071de4841612ac52a78b2f79d17 100644 (file)
@@ -973,6 +973,8 @@ decode PO default Unknown::unknown() {
                             0x100: mflr({{ Rt = LR; }});
                             0x120: mfctr({{ Rt = CTR; }});
                             0x1f9: mftar({{ Rt = TAR; }});
+                            0x188: mftb({{ Rt = curTick(); }});
+                            0x1a8: mftbu({{ Rt_uw = curTick() >> 32; }});
                         }
 
                         467: decode SPR {