start to read RM CSV files
[soc.git] / src / soc / decoder / power_enums.py
index c39d9c6ef1654f10ab99fe5dbcf2e786e3efca26..51cd94bbdfb22839d1a5d74ef8a647f8e3941ff9 100644 (file)
@@ -5,6 +5,13 @@ from os.path import dirname, join
 from collections import namedtuple
 
 
+def find_wiki_dir():
+    filedir = os.path.dirname(os.path.abspath(__file__))
+    basedir = dirname(dirname(dirname(filedir)))
+    tabledir = join(basedir, 'libreriscv')
+    tabledir = join(tabledir, 'openpower')
+    return join(tabledir, 'isatables')
+
 def find_wiki_file(name):
     filedir = os.path.dirname(os.path.abspath(__file__))
     basedir = dirname(dirname(dirname(filedir)))
@@ -12,8 +19,7 @@ def find_wiki_file(name):
     tabledir = join(tabledir, 'openpower')
     tabledir = join(tabledir, 'isatables')
 
-    file_path = join(tabledir, name)
-    return file_path
+    return join(find_wiki_dir(), name)
 
 
 def get_csv(name):
@@ -58,6 +64,7 @@ class Function(Enum):
     MUL = 1 << 8
     DIV = 1 << 9
     SPR = 1 << 10
+    MMU = 1 << 11
 
 
 @unique
@@ -116,13 +123,13 @@ _insns = [
     "nand", "neg", "nego", "nop", "nor", "or", "orc", "ori", "oris",
     "popcntb", "popcntd", "popcntw", "prtyd", "prtyw", "rfid", "rldcl",
     "rldcr", "rldic", "rldicl", "rldicr", "rldimi", "rlwimi", "rlwinm",
-    "rlwnm", "setb", "sim_cfg", "sld", "slw", "srad", "sradi", "sraw",
+    "rlwnm", "setb", "sim_cfg", "slbia", "sld", "slw", "srad", "sradi", "sraw",
     "srawi", "srd", "srw", "stb", "stbcix", "stbcx", "stbu", "stbux", "stbx",
     "std", "stdbrx", "stdcx", "stdu", "stdux", "stdx", "sth", "sthbrx", "sthcx",
     "sthu", "sthux", "sthx", "stw", "stwbrx", "stwcx", "stwu", "stwux",
     "stwx", "subf", "subfc", "subfco", "subfe", "subfeo", "subfic",
     "subfme", "subfmeo", "subfo", "subfze", "subfzeo", "sync", "td",
-    "tdi", "tw", "twi", "xor", "xori", "xoris",
+    "tdi", "tlbie", "tlbiel", "tw", "twi", "xor", "xori", "xoris",
 ]
 
 # two-way lookup of instruction-to-index and vice-versa
@@ -207,6 +214,7 @@ class MicrOp(Enum):
     OP_MTMSRD = 72
     OP_SC = 73
     OP_MTMSR = 74
+    OP_TLBIE = 75
 
 
 @unique
@@ -292,6 +300,7 @@ class CRInSel(Enum):
     BA_BB = 4
     BC = 5
     WHOLE_REG = 6
+    CR1 = 7
 
 
 @unique
@@ -301,6 +310,7 @@ class CROutSel(Enum):
     BF = 2
     BT = 3
     WHOLE_REG = 4
+    CR1 = 5
 
 
 # SPRs - Special-Purpose Registers.  See V3.0B Figure 18 p971 and
@@ -337,3 +347,5 @@ if __name__ == '__main__':
     print(SPR.__members__['TAR'])
     for x in SPR:
         print(x, x.value, str(x), x.name)
+
+    print ("function", Function.ALU.name)