Add an api to get the name for a CSR.
[riscv-isa-sim.git] / riscv / regnames.cc
index 93cb736bbdfc368fd8dfc0344f675ce7772ede84..0bf8d9c6e990f0424a1c2cb3dc07f9e0364d5d72 100644 (file)
@@ -1,15 +1,26 @@
+// See LICENSE for license details.
+
 #include "disasm.h"
 
 const char* xpr_name[] = {
-  "zero", "ra", "s0", "s1",  "s2",  "s3",  "s4",  "s5",
-  "s6",   "s7", "s8", "s9", "s10", "s11",  "sp",  "tp",
-  "v0",   "v1", "a0", "a1",  "a2",  "a3",  "a4",  "a5",
-  "a6",   "a7", "t0", "t1",  "t2",  "t3",  "t4",  "gp"
+  "zero", "ra", "sp",  "gp",  "tp", "t0",  "t1",  "t2",
+  "s0",   "s1", "a0",  "a1",  "a2", "a3",  "a4",  "a5",
+  "a6",   "a7", "s2",  "s3",  "s4", "s5",  "s6",  "s7",
+  "s8",   "s9", "s10", "s11", "t3", "t4",  "t5",  "t6"
 };
 
 const char* fpr_name[] = {
-  "fs0", "fs1",  "fs2",  "fs3",  "fs4",  "fs5",  "fs6",  "fs7",
-  "fs8", "fs9", "fs10", "fs11", "fs12", "fs13", "fs14", "fs15",
-  "fv0", "fv1", "fa0",   "fa1",  "fa2",  "fa3",  "fa4",  "fa5",
-  "fa6", "fa7", "ft0",   "ft1",  "ft2",  "ft3",  "ft4",  "ft5"
+  "ft0", "ft1", "ft2",  "ft3",  "ft4", "ft5", "ft6",  "ft7",
+  "fs0", "fs1", "fa0",  "fa1",  "fa2", "fa3", "fa4",  "fa5",
+  "fa6", "fa7", "fs2",  "fs3",  "fs4", "fs5", "fs6",  "fs7",
+  "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11"
 };
+
+const char* csr_name(int which) {
+  switch (which) {
+    #define DECLARE_CSR(name, number)  case number: return #name;
+    #include "encoding.h"
+    #undef DECLARE_CSR
+  }
+  return "unknown-csr";
+}