summaryrefslogtreecommitdiff
path: root/inst.chisel
diff options
context:
space:
mode:
Diffstat (limited to 'inst.chisel')
-rw-r--r--inst.chisel118
1 files changed, 87 insertions, 31 deletions
diff --git a/inst.chisel b/inst.chisel
index abda1c6..a805101 100644
--- a/inst.chisel
+++ b/inst.chisel
@@ -1,12 +1,13 @@
- /* Automatically generated by parse-opcodes */
- def JAL = Bits("b?????????????????????????1100111")
- def JALR = Bits("b?????????????????000?????1101111")
+/* Automatically generated by parse-opcodes */
+object Instructions {
def BEQ = Bits("b?????????????????000?????1100011")
def BNE = Bits("b?????????????????001?????1100011")
def BLT = Bits("b?????????????????100?????1100011")
def BGE = Bits("b?????????????????101?????1100011")
def BLTU = Bits("b?????????????????110?????1100011")
def BGEU = Bits("b?????????????????111?????1100011")
+ def JALR = Bits("b?????????????????000?????1100111")
+ def JAL = Bits("b?????????????????????????1101111")
def LUI = Bits("b?????????????????????????0110111")
def AUIPC = Bits("b?????????????????????????0010111")
def ADDI = Bits("b?????????????????000?????0010011")
@@ -28,14 +29,6 @@
def SRA = Bits("b0100000??????????101?????0110011")
def OR = Bits("b0000000??????????110?????0110011")
def AND = Bits("b0000000??????????111?????0110011")
- def MUL = Bits("b0000001??????????000?????0110011")
- def MULH = Bits("b0000001??????????001?????0110011")
- def MULHSU = Bits("b0000001??????????010?????0110011")
- def MULHU = Bits("b0000001??????????011?????0110011")
- def DIV = Bits("b0000001??????????100?????0110011")
- def DIVU = Bits("b0000001??????????101?????0110011")
- def REM = Bits("b0000001??????????110?????0110011")
- def REMU = Bits("b0000001??????????111?????0110011")
def ADDIW = Bits("b?????????????????000?????0011011")
def SLLIW = Bits("b0000000??????????001?????0011011")
def SRLIW = Bits("b0000000??????????101?????0011011")
@@ -45,11 +38,6 @@
def SLLW = Bits("b0000000??????????001?????0111011")
def SRLW = Bits("b0000000??????????101?????0111011")
def SRAW = Bits("b0100000??????????101?????0111011")
- def MULW = Bits("b0000001??????????000?????0111011")
- def DIVW = Bits("b0000001??????????100?????0111011")
- def DIVUW = Bits("b0000001??????????101?????0111011")
- def REMW = Bits("b0000001??????????110?????0111011")
- def REMUW = Bits("b0000001??????????111?????0111011")
def LB = Bits("b?????????????????000?????0000011")
def LH = Bits("b?????????????????001?????0000011")
def LW = Bits("b?????????????????010?????0000011")
@@ -61,6 +49,21 @@
def SH = Bits("b?????????????????001?????0100011")
def SW = Bits("b?????????????????010?????0100011")
def SD = Bits("b?????????????????011?????0100011")
+ def FENCE = Bits("b?????????????????000?????0001111")
+ def FENCE_I = Bits("b?????????????????001?????0001111")
+ def MUL = Bits("b0000001??????????000?????0110011")
+ def MULH = Bits("b0000001??????????001?????0110011")
+ def MULHSU = Bits("b0000001??????????010?????0110011")
+ def MULHU = Bits("b0000001??????????011?????0110011")
+ def DIV = Bits("b0000001??????????100?????0110011")
+ def DIVU = Bits("b0000001??????????101?????0110011")
+ def REM = Bits("b0000001??????????110?????0110011")
+ def REMU = Bits("b0000001??????????111?????0110011")
+ def MULW = Bits("b0000001??????????000?????0111011")
+ def DIVW = Bits("b0000001??????????100?????0111011")
+ def DIVUW = Bits("b0000001??????????101?????0111011")
+ def REMW = Bits("b0000001??????????110?????0111011")
+ def REMUW = Bits("b0000001??????????111?????0111011")
def AMOADD_W = Bits("b00000????????????010?????0101111")
def AMOXOR_W = Bits("b00100????????????010?????0101111")
def AMOOR_W = Bits("b01000????????????010?????0101111")
@@ -83,18 +86,15 @@
def AMOSWAP_D = Bits("b00001????????????011?????0101111")
def LR_D = Bits("b00010??00000?????011?????0101111")
def SC_D = Bits("b00011????????????011?????0101111")
- def FENCE = Bits("b?????????????????000?????0001111")
- def FENCE_I = Bits("b?????????????????001?????0001111")
- def SYSCALL = Bits("b00000000000000000000000001110111")
- def BREAK = Bits("b00000000000000000001000001110111")
- def RDCYCLE = Bits("b00000000000000000100?????1110111")
- def RDTIME = Bits("b00000010000000000100?????1110111")
- def RDINSTRET = Bits("b00000100000000000100?????1110111")
- def MTPCR = Bits("b0000000??????????000?????1110011")
- def MFPCR = Bits("b000000000000?????001?????1110011")
- def SETPCR = Bits("b?????????????????010?????1110011")
- def CLEARPCR = Bits("b?????????????????011?????1110011")
- def ERET = Bits("b00000000000000000100000001110011")
+ def SCALL = Bits("b00000000000000000000000001110011")
+ def SBREAK = Bits("b00000000000100000000000001110011")
+ def SRET = Bits("b10000000000000000000000001110011")
+ def CSRRW = Bits("b?????????????????001?????1110011")
+ def CSRRS = Bits("b?????????????????010?????1110011")
+ def CSRRC = Bits("b?????????????????011?????1110011")
+ def CSRRWI = Bits("b?????????????????101?????1110011")
+ def CSRRSI = Bits("b?????????????????110?????1110011")
+ def CSRRCI = Bits("b?????????????????111?????1110011")
def FADD_S = Bits("b0000000??????????????????1010011")
def FSUB_S = Bits("b0000100??????????????????1010011")
def FMUL_S = Bits("b0001000??????????????????1010011")
@@ -141,10 +141,8 @@
def FMAX_D = Bits("b1100101??????????000?????1010011")
def FMV_X_S = Bits("b111000000000?????000?????1010011")
def FMV_X_D = Bits("b111000100000?????000?????1010011")
- def FRSR = Bits("b11101000000000000000?????1010011")
def FMV_S_X = Bits("b111100000000?????000?????1010011")
def FMV_D_X = Bits("b111100100000?????000?????1010011")
- def FSSR = Bits("b111110000000?????000?????1010011")
def FLW = Bits("b?????????????????010?????0000111")
def FLD = Bits("b?????????????????011?????0000111")
def FSW = Bits("b?????????????????010?????0100111")
@@ -157,7 +155,6 @@
def FMSUB_D = Bits("b?????01??????????????????1000111")
def FNMSUB_D = Bits("b?????01??????????????????1001011")
def FNMADD_D = Bits("b?????01??????????????????1001111")
- /* Automatically generated by parse-opcodes */
def CUSTOM0 = Bits("b?????????????????000?????0001011")
def CUSTOM0_RS1 = Bits("b?????????????????010?????0001011")
def CUSTOM0_RS1_RS2 = Bits("b?????????????????011?????0001011")
@@ -182,3 +179,62 @@
def CUSTOM3_RD = Bits("b?????????????????100?????1111011")
def CUSTOM3_RD_RS1 = Bits("b?????????????????110?????1111011")
def CUSTOM3_RD_RS1_RS2 = Bits("b?????????????????111?????1111011")
+}
+object CSRs {
+ val fflags = 0x1
+ val frm = 0x2
+ val fcsr = 0x3
+ val sup0 = 0x500
+ val sup1 = 0x501
+ val epc = 0x502
+ val badvaddr = 0x503
+ val ptbr = 0x504
+ val asid = 0x505
+ val count = 0x506
+ val compare = 0x507
+ val evec = 0x508
+ val cause = 0x509
+ val status = 0x50a
+ val hartid = 0x50b
+ val impl = 0x50c
+ val fatc = 0x50d
+ val send_ipi = 0x50e
+ val clear_ipi = 0x50f
+ val stats = 0x51c
+ val reset = 0x51d
+ val tohost = 0x51e
+ val fromhost = 0x51f
+ val cycle = 0xc00
+ val time = 0xc01
+ val instret = 0xc02
+ val all = {
+ val res = collection.mutable.ArrayBuffer[Int]()
+ res += fflags
+ res += frm
+ res += fcsr
+ res += sup0
+ res += sup1
+ res += epc
+ res += badvaddr
+ res += ptbr
+ res += asid
+ res += count
+ res += compare
+ res += evec
+ res += cause
+ res += status
+ res += hartid
+ res += impl
+ res += fatc
+ res += send_ipi
+ res += clear_ipi
+ res += stats
+ res += reset
+ res += tohost
+ res += fromhost
+ res += cycle
+ res += time
+ res += instret
+ res.toArray
+ }
+}