diff --git a/tools/ctrl_maker.py b/tools/ctrl_maker.py index a670c42..1c42741 100644 --- a/tools/ctrl_maker.py +++ b/tools/ctrl_maker.py @@ -1,4 +1,4 @@ -with open('mctrl0.txt') as f: +with open('mctrl1.txt') as f: lines = f.readlines() title = lines[0].split() items = [x.split() for x in lines[1:]] diff --git a/tools/decoder.py b/tools/decoder.py index ff11b8f..71c2cfc 100644 --- a/tools/decoder.py +++ b/tools/decoder.py @@ -1,76 +1,77 @@ table = [ - # ('000000000000000000000?????001111', 'SYNC'), - # ('00000000000???????????????000000', 'SLL'), - # ('00000000000???????????????000010', 'SRL'), - # ('00000000000???????????????000011', 'SRA'), - # ('000000???????????????00000000100', 'SLLV'), - # ('000000???????????????00000000110', 'SRLV'), - # ('000000???????????????00000000111', 'SRAV'), - # ('000000?????000000000000000001000', 'JR'), - # ('000000?????00000?????00000001001', 'JALR'), - # ('000000????????????????????001100', 'SYSCALL'), - # ('000000????????????????????001101', 'BREAK'), - # ('0000000000000000?????00000010000', 'MFHI'), - # ('000000?????000000000000000010001', 'MTHI'), - # ('0000000000000000?????00000010010', 'MFLO'), - # ('000000?????000000000000000010011', 'MTLO'), + ('000000000000000000000?????001111', 'SYNC'), + ('00000000000???????????????000000', 'SLL'), + ('00000000000???????????????000010', 'SRL'), + ('00000000000???????????????000011', 'SRA'), + ('000000???????????????00000000100', 'SLLV'), + ('000000???????????????00000000110', 'SRLV'), + ('000000???????????????00000000111', 'SRAV'), + ('000000?????000000000000000001000', 'JR'), + ('000000?????00000?????00000001001', 'JALR'), + ('000000????????????????????001100', 'SYSCALL'), + ('000000????????????????????001101', 'BREAK'), + ('0000000000000000?????00000010000', 'MFHI'), + ('000000?????000000000000000010001', 'MTHI'), + ('0000000000000000?????00000010010', 'MFLO'), + ('000000?????000000000000000010011', 'MTLO'), ('000000??????????0000000000011000', 'MULT'), ('000000??????????0000000000011001', 'MULTU'), - # ('000000??????????0000000000011010', 'DIV'), - # ('000000??????????0000000000011011', 'DIVU'), - # ('000000???????????????00000100000', 'ADD'), - # ('000000???????????????00000100001', 'ADDU'), - # ('000000???????????????00000100010', 'SUB'), - # ('000000???????????????00000100011', 'SUBU'), - # ('000000???????????????00000100100', 'AND'), - # ('000000???????????????00000100101', 'OR'), - # ('000000???????????????00000100110', 'XOR'), - # ('000000???????????????00000100111', 'NOR'), - # ('000000???????????????00000101010', 'SLT'), - # ('000000???????????????00000101011', 'SLTU'), - # ('000001?????00000????????????????', 'BLTZ'), - # ('000001?????10000????????????????', 'BLTZAL'), - # ('000001?????00001????????????????', 'BGEZ'), - # ('000001?????10001????????????????', 'BGEZAL'), - # ('000010??????????????????????????', 'J'), - # ('000011??????????????????????????', 'JAL'), - # ('000100??????????????????????????', 'BEQ'), - # ('000101??????????????????????????', 'BNE'), - # ('000110?????00000????????????????', 'BLEZ'), - # ('000111?????00000????????????????', 'BGTZ'), - # ('001000??????????????????????????', 'ADDI'), - # ('001001??????????????????????????', 'ADDIU'), - # ('001010??????????????????????????', 'SLTI'), - # ('001011??????????????????????????', 'SLTIU'), - # ('001100??????????????????????????', 'ANDI'), - # ('001101??????????????????????????', 'ORI'), - # ('001110??????????????????????????', 'XORI'), - # ('00111100000?????????????????????', 'LUI'), - # ('01000000000??????????00000000???', 'MFC0'), - # ('01000000100??????????00000000???', 'MTC0'), - # ('01000010000000000000000000000001', 'TLBR'), - # ('01000010000000000000000000000010', 'TLBWI'), - # ('01000010000000000000000000000110', 'TLBWR'), - # ('01000010000000000000000000001000', 'TLBP'), - # ('01000010000000000000000000011000', 'ERET'), + ('000000??????????0000000000011010', 'DIV'), + ('000000??????????0000000000011011', 'DIVU'), + ('000000???????????????00000100000', 'ADD'), + ('000000???????????????00000100001', 'ADDU'), + ('000000???????????????00000100010', 'SUB'), + ('000000???????????????00000100011', 'SUBU'), + ('000000???????????????00000100100', 'AND'), + ('000000???????????????00000100101', 'OR'), + ('000000???????????????00000100110', 'XOR'), + ('000000???????????????00000100111', 'NOR'), + ('000000???????????????00000101010', 'SLT'), + ('000000???????????????00000101011', 'SLTU'), + ('000001?????00000????????????????', 'BLTZ'), + ('000001?????10000????????????????', 'BLTZAL'), + ('000001?????00001????????????????', 'BGEZ'), + ('000001?????10001????????????????', 'BGEZAL'), + ('000010??????????????????????????', 'J'), + ('000011??????????????????????????', 'JAL'), + ('000100??????????????????????????', 'BEQ'), + ('000101??????????????????????????', 'BNE'), + ('000110?????00000????????????????', 'BLEZ'), + ('000111?????00000????????????????', 'BGTZ'), + ('001000??????????????????????????', 'ADDI'), + ('001001??????????????????????????', 'ADDIU'), + ('001010??????????????????????????', 'SLTI'), + ('001011??????????????????????????', 'SLTIU'), + ('001100??????????????????????????', 'ANDI'), + ('001101??????????????????????????', 'ORI'), + ('001110??????????????????????????', 'XORI'), + ('00111100000?????????????????????', 'LUI'), + ('01000000000??????????00000000???', 'MFC0'), + ('01000000100??????????00000000???', 'MTC0'), + ('01000010000000000000000000000001', 'TLBR'), + ('01000010000000000000000000000010', 'TLBWI'), + ('01000010000000000000000000000110', 'TLBWR'), + ('01000010000000000000000000001000', 'TLBP'), + ('01000010000000000000000000011000', 'ERET'), ('011100??????????0000000000000000', 'MADD'), ('011100??????????0000000000000001', 'MADDU'), ('011100??????????0000000000000100', 'MSUB'), ('011100??????????0000000000000101', 'MSUBU'), - # ('011100???????????????00000000010', 'MUL'), - # ('100000??????????????????????????', 'LB'), - # ('100001??????????????????????????', 'LH'), - # ('100010??????????????????????????', 'LWL'), - # ('100011??????????????????????????', 'LW'), - # ('100100??????????????????????????', 'LBU'), - # ('100101??????????????????????????', 'LHU'), - # ('100110??????????????????????????', 'LWR'), - # ('101000??????????????????????????', 'SB'), - # ('101001??????????????????????????', 'SH'), - # ('101010??????????????????????????', 'SWL'), - # ('101011??????????????????????????', 'SW'), - # ('101110??????????????????????????', 'SWR'), - # ('110011??????????????????????????', 'PREF'), + ('011100???????????????00000000010', 'MUL'), + ('100000??????????????????????????', 'LB'), + ('100001??????????????????????????', 'LH'), + ('100010??????????????????????????', 'LWL'), + ('100011??????????????????????????', 'LW'), + ('100100??????????????????????????', 'LBU'), + ('100101??????????????????????????', 'LHU'), + ('100110??????????????????????????', 'LWR'), + ('101000??????????????????????????', 'SB'), + ('101001??????????????????????????', 'SH'), + ('101010??????????????????????????', 'SWL'), + ('101011??????????????????????????', 'SW'), + ('101110??????????????????????????', 'SWR'), + ('101111??????????????????????????', 'CACHE'), + ('110011??????????????????????????', 'PREF'), ] class Boolean: @@ -126,7 +127,7 @@ for inst, name in table: ctrl['ECtrl_SA'] = (inst[31] | inst[29] | ~inst[26] & (inst[5] | inst[2]), inst[31] | (~inst[28] & (inst[29] | inst[26] | inst[5] | inst[3] | inst[2]) | inst[28] & (~inst[27] | ~inst[26]))) ctrl['ECtrl_SB'] = (inst[31] | inst[29], inst[26] | ~inst[5] & inst[3]) - ctrl['imm'] = (inst[28] & inst[27] & inst[26], inst[31] | ~inst[28]) + ctrl['imm'] = (~inst[31] & inst[28] & inst[27] & inst[26], inst[31] | ~inst[28]) ctrl['MCtrl0_HW'] = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (~inst[1] & inst[0] | inst[3]) | inst[30] & inst[29] & ~inst[1] ctrl['MCtrl0_LW'] = ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & inst[4] & (inst[1] & inst[0] | inst[3]) | inst[30] & inst[29] & ~inst[1] @@ -135,14 +136,15 @@ for inst, name in table: ctrl['MCtrl0_C0W'] = ~inst[31] & inst[30] & ~inst[29] & inst[23] & ~inst[3] ctrl['MCtrl0_RS0'] = (ctrl['DP1'], inst[30], ~inst[29] & (inst[30] | ~inst[1])) - ctrl['MCtrl1_MR'] = inst[31] & ~inst[30] - ctrl['MCtrl1_MWR'] = inst[29] - ctrl['MCtrl1_MX'] = ~inst[28] - ctrl['MCtrl1_ALR'] = (inst[28] & inst[27], ~inst[28] & inst[27] & ~inst[26]) - ctrl['MCtrl1_TLBR'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & ~inst[1] - ctrl['MCtrl1_TLBWI'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & inst[1] - ctrl['MCtrl1_TLBWR'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & (inst[2] | ~inst[1]) - ctrl['MCtrl1_TLBP'] = ~inst[31] & inst[30] & ~inst[4] & inst[3] + ctrl['MCtrl1_MR'] = inst[31] & ~inst[30] + ctrl['MCtrl1_MWR'] = inst[29] + ctrl['MCtrl1_MX'] = ~inst[28] + ctrl['MCtrl1_ALR'] = (inst[28] & inst[27] & ~inst[26], inst[27] & ~inst[26]) + ctrl['MCtrl1_TLBR'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & ~inst[1] + ctrl['MCtrl1_TLBWI'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & inst[1] + ctrl['MCtrl1_TLBWR'] = ~inst[31] & inst[30] & ~inst[29] & inst[25] & ~inst[3] & (inst[2] | ~inst[1]) + ctrl['MCtrl1_TLBP'] = ~inst[31] & inst[30] & ~inst[4] & inst[3] + ctrl['MCtrl1_CACHE_OP'] = (inst[29] & inst[28] & inst[26] & inst[16], inst[29] & inst[28] & inst[26] & ~inst[20], inst[29] & inst[28] & inst[26] & ~inst[18] & (inst[20] | inst[19] | ~inst[16])) ctrl['WCtrl_RW'] = ~inst[30] & (~inst[27] & (~inst[26] & (~inst[31] & (~inst[28] & (~inst[3] & (~inst[4] | ~inst[0]) | inst[3] & (~inst[4] & ~inst[2] & inst[0] | inst[5])) | inst[29]) | inst[31] & ~inst[29]) | inst[26] & (~inst[31] & (~inst[28] & inst[20] | inst[29]) | inst[31] & ~inst[29])) | inst[27] & (~inst[26] & (~inst[31] & inst[29] | inst[31] & ~inst[29]) | inst[26] & (~inst[31] & (~inst[28] | inst[29]) | inst[31] & ~inst[29]))) | inst[30] & ~inst[31] & ~inst[3] & (~inst[29] & ~inst[25] & ~inst[23] | inst[29] & inst[1]) ctrl['RD'] = (~inst[29] & inst[30] | inst[29] & ~inst[30] | inst[31], inst[26]) diff --git a/tools/ectrl.txt b/tools/ectrl.txt index 7a0a2c1..71d125c 100644 --- a/tools/ectrl.txt +++ b/tools/ectrl.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SWL 32'b101011?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SW 32'b101110?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // SWR +32'b101111?????????????????????????? ADD 0 RS 1 1 IMM 1 ? IX 0 1 // CACHE 32'b110011?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? // PREF \ No newline at end of file diff --git a/tools/global.txt b/tools/global.txt index 45e1458..1c41b80 100644 --- a/tools/global.txt +++ b/tools/global.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SWL 32'b101011?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SW 32'b101110?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // SWR +32'b101111?????????????????????????? 0 0 0 0 1 0 0 0 0 1 // CACHE 32'b110011?????????????????????????? 0 0 0 0 0 0 0 0 1 1 // PREF (NOP) \ No newline at end of file diff --git a/tools/mctrl0.txt b/tools/mctrl0.txt index 6f1e58c..fc9f549 100644 --- a/tools/mctrl0.txt +++ b/tools/mctrl0.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? ? ? ? 0 ? ? ? ? ? 0 ? ? ? ? // SWL 32'b101011?????????????????????????? ? ? ? 0 ? ? ? ? ? 0 ? ? ? ? // SW 32'b101110?????????????????????????? ? ? ? 0 ? ? ? ? ? 0 ? ? ? ? // SWR +32'b101111?????????????????????????? ? ? ? 0 ? ? ? ? ? 0 ? ? ? ? // CACHE 32'b110011?????????????????????????? 0 0 ? 0 ? ? ? ? ? 0 ? ? ? ? // PREF (NOP) \ No newline at end of file diff --git a/tools/mctrl1.txt b/tools/mctrl1.txt index d6bf7c0..0626d04 100644 --- a/tools/mctrl1.txt +++ b/tools/mctrl1.txt @@ -1,73 +1,80 @@ -////-------------------------------- TLBR TLBWI TLBWR TLBP MR MWR MX ALR ALR1 ALR0 -32'b000000000000000000000?????001111 0 0 0 0 0 ? ? ? ? ? // SYNC (NOP) -32'b00000000000???????????????000000 0 0 0 0 0 ? ? ? ? ? // SLL -32'b00000000000???????????????000010 0 0 0 0 0 ? ? ? ? ? // SRL -32'b00000000000???????????????000011 0 0 0 0 0 ? ? ? ? ? // SRA -32'b000000???????????????00000000100 0 0 0 0 0 ? ? ? ? ? // SLLV -32'b000000???????????????00000000110 0 0 0 0 0 ? ? ? ? ? // SRLV -32'b000000???????????????00000000111 0 0 0 0 0 ? ? ? ? ? // SRAV -32'b000000?????000000000000000001000 0 0 0 0 0 ? ? ? ? ? // JR -32'b000000?????00000?????00000001001 0 0 0 0 0 ? ? ? ? ? // JALR -32'b000000????????????????????001100 0 0 0 0 0 ? ? ? ? ? // SYSCALL -32'b000000????????????????????001101 0 0 0 0 0 ? ? ? ? ? // BREAK -32'b0000000000000000?????00000010000 0 0 0 0 ? ? ? ? ? ? // MFHI -32'b000000?????000000000000000010001 0 0 0 0 ? ? ? ? ? ? // MTHI -32'b0000000000000000?????00000010010 0 0 0 0 ? ? ? ? ? ? // MFLO -32'b000000?????000000000000000010011 0 0 0 0 ? ? ? ? ? ? // MTLO -32'b000000??????????0000000000011000 0 0 0 0 ? ? ? ? ? ? // MULT -32'b000000??????????0000000000011001 0 0 0 0 ? ? ? ? ? ? // MULTU -32'b000000??????????0000000000011010 0 0 0 0 ? ? ? ? ? ? // DIV -32'b000000??????????0000000000011011 0 0 0 0 ? ? ? ? ? ? // DIVU -32'b000000???????????????00000100000 0 0 0 0 0 ? ? ? ? ? // ADD -32'b000000???????????????00000100001 0 0 0 0 0 ? ? ? ? ? // ADDU -32'b000000???????????????00000100010 0 0 0 0 0 ? ? ? ? ? // SUB -32'b000000???????????????00000100011 0 0 0 0 0 ? ? ? ? ? // SUBU -32'b000000???????????????00000100100 0 0 0 0 0 ? ? ? ? ? // AND -32'b000000???????????????00000100101 0 0 0 0 0 ? ? ? ? ? // OR -32'b000000???????????????00000100110 0 0 0 0 0 ? ? ? ? ? // XOR -32'b000000???????????????00000100111 0 0 0 0 0 ? ? ? ? ? // NOR -32'b000000???????????????00000101010 0 0 0 0 0 ? ? ? ? ? // SLT -32'b000000???????????????00000101011 0 0 0 0 0 ? ? ? ? ? // SLTU -32'b000001?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? // BLTZ -32'b000001?????10000???????????????? 0 0 0 0 0 ? ? ? ? ? // BLTZAL -32'b000001?????00001???????????????? 0 0 0 0 0 ? ? ? ? ? // BGEZ -32'b000001?????10001???????????????? 0 0 0 0 0 ? ? ? ? ? // BGEZAL -32'b000010?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // J -32'b000011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // JAL -32'b000100?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // BEQ -32'b000101?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // BNE -32'b000110?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? // BLEZ -32'b000111?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? // BGTZ -32'b001000?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // ADDI -32'b001001?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // ADDIU -32'b001010?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // SLTI -32'b001011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // SLTIU -32'b001100?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // ANDI -32'b001101?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // ORI -32'b001110?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // XORI -32'b00111100000????????????????????? 0 0 0 0 0 ? ? ? ? ? // LUI -32'b01000000000??????????00000000??? 0 0 0 0 ? ? ? ? ? ? // MFC0 -32'b01000000100??????????00000000??? 0 0 0 0 ? ? ? ? ? ? // MTC0 -32'b01000010000000000000000000000001 1 0 1 0 0 ? ? ? ? ? // TLBR -32'b01000010000000000000000000000010 0 1 0 0 0 ? ? ? ? ? // TLBWI -32'b01000010000000000000000000000110 0 1 1 0 0 ? ? ? ? ? // TLBWR -32'b01000010000000000000000000001000 0 0 0 1 0 ? ? ? ? ? // TLBP -32'b01000010000000000000000000011000 0 0 0 0 0 ? ? ? ? ? // ERET -32'b011100??????????0000000000000000 0 0 0 0 ? ? ? ? ? ? // MADD -32'b011100??????????0000000000000001 0 0 0 0 ? ? ? ? ? ? // MADDU -32'b011100??????????0000000000000100 0 0 0 0 ? ? ? ? ? ? // MSUB -32'b011100??????????0000000000000101 0 0 0 0 ? ? ? ? ? ? // MSUBU -32'b011100???????????????00000000010 0 0 0 0 ? ? ? ? ? ? // MUL -32'b100000?????????????????????????? 0 0 0 0 1 0 1 ALIGN 0 0 // LB -32'b100001?????????????????????????? 0 0 0 0 1 0 1 ALIGN 0 0 // LH -32'h100010?????????????????????????? 0 0 0 0 1 0 ? ULEFT 0 1 // LWL -32'b100011?????????????????????????? 0 0 0 0 1 0 ? ALIGN 0 0 // LW -32'b100100?????????????????????????? 0 0 0 0 1 0 0 ALIGN 0 0 // LBU -32'b100101?????????????????????????? 0 0 0 0 1 0 0 ALIGN 0 0 // LHU -32'h100110?????????????????????????? 0 0 0 0 1 0 ? URIGHT 1 ? // LWR -32'b101000?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 // SB -32'b101001?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 // SH -32'b101010?????????????????????????? 0 0 0 0 1 1 ? ULEFT 0 1 // SWL -32'b101011?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 // SW -32'b101110?????????????????????????? 0 0 0 0 1 1 ? URIGHT 1 ? // SWR -32'b110011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? // PREF (NOP) \ No newline at end of file +////-------------------------------- TLBR TLBWI TLBWR TLBP MR MWR MX ALR ALR1 ALR0 CACHEOP CO2 CO1 CO0 +32'b000000000000000000000?????001111 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SYNC (NOP) +32'b00000000000???????????????000000 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLL +32'b00000000000???????????????000010 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SRL +32'b00000000000???????????????000011 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SRA +32'b000000???????????????00000000100 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLLV +32'b000000???????????????00000000110 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SRLV +32'b000000???????????????00000000111 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SRAV +32'b000000?????000000000000000001000 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // JR +32'b000000?????00000?????00000001001 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // JALR +32'b000000????????????????????001100 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SYSCALL +32'b000000????????????????????001101 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BREAK +32'b0000000000000000?????00000010000 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MFHI +32'b000000?????000000000000000010001 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MTHI +32'b0000000000000000?????00000010010 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MFLO +32'b000000?????000000000000000010011 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MTLO +32'b000000??????????0000000000011000 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MULT +32'b000000??????????0000000000011001 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MULTU +32'b000000??????????0000000000011010 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // DIV +32'b000000??????????0000000000011011 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // DIVU +32'b000000???????????????00000100000 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ADD +32'b000000???????????????00000100001 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ADDU +32'b000000???????????????00000100010 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SUB +32'b000000???????????????00000100011 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SUBU +32'b000000???????????????00000100100 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // AND +32'b000000???????????????00000100101 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // OR +32'b000000???????????????00000100110 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // XOR +32'b000000???????????????00000100111 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // NOR +32'b000000???????????????00000101010 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLT +32'b000000???????????????00000101011 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLTU +32'b000001?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BLTZ +32'b000001?????10000???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BLTZAL +32'b000001?????00001???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BGEZ +32'b000001?????10001???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BGEZAL +32'b000010?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // J +32'b000011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // JAL +32'b000100?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BEQ +32'b000101?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BNE +32'b000110?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BLEZ +32'b000111?????00000???????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // BGTZ +32'b001000?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ADDI +32'b001001?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ADDIU +32'b001010?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLTI +32'b001011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // SLTIU +32'b001100?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ANDI +32'b001101?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ORI +32'b001110?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // XORI +32'b00111100000????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // LUI +32'b01000000000??????????00000000??? 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MFC0 +32'b01000000100??????????00000000??? 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MTC0 +32'b01000010000000000000000000000001 1 0 1 0 0 ? ? ? ? ? ? ? ? ? // TLBR +32'b01000010000000000000000000000010 0 1 0 0 0 ? ? ? ? ? ? ? ? ? // TLBWI +32'b01000010000000000000000000000110 0 1 1 0 0 ? ? ? ? ? ? ? ? ? // TLBWR +32'b01000010000000000000000000001000 0 0 0 1 0 ? ? ? ? ? ? ? ? ? // TLBP +32'b01000010000000000000000000011000 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // ERET +32'b011100??????????0000000000000000 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MADD +32'b011100??????????0000000000000001 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MADDU +32'b011100??????????0000000000000100 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MSUB +32'b011100??????????0000000000000101 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MSUBU +32'b011100???????????????00000000010 0 0 0 0 ? ? ? ? ? ? ? ? ? ? // MUL +32'b100000?????????????????????????? 0 0 0 0 1 0 1 ALIGN 0 0 CNOP 0 0 0 // LB +32'b100001?????????????????????????? 0 0 0 0 1 0 1 ALIGN 0 0 CNOP 0 0 0 // LH +32'h100010?????????????????????????? 0 0 0 0 1 0 ? ULEFT 0 1 CNOP 0 0 0 // LWL +32'b100011?????????????????????????? 0 0 0 0 1 0 ? ALIGN 0 0 CNOP 0 0 0 // LW +32'b100100?????????????????????????? 0 0 0 0 1 0 0 ALIGN 0 0 CNOP 0 0 0 // LBU +32'b100101?????????????????????????? 0 0 0 0 1 0 0 ALIGN 0 0 CNOP 0 0 0 // LHU +32'h100110?????????????????????????? 0 0 0 0 1 0 ? URIGHT 1 ? CNOP 0 0 0 // LWR +32'b101000?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 CNOP 0 0 0 // SB +32'b101001?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 CNOP 0 0 0 // SH +32'b101010?????????????????????????? 0 0 0 0 1 1 ? ULEFT 0 1 CNOP 0 0 0 // SWL +32'b101011?????????????????????????? 0 0 0 0 1 1 ? ALIGN 0 0 CNOP 0 0 0 // SW +32'b101110?????????????????????????? 0 0 0 0 1 1 ? URIGHT 1 ? CNOP 0 0 0 // SWR +32'b101111?????00000???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 IC_I 0 1 1 // I-Cache Index Invalid +32'b101111?????01000???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 IC_I 0 1 1 // I-Cache Index Store Tag +32'b101111?????10000???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 IC_L 0 0 1 // I-Cache Hit Invalid +32'b101111?????00001???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 DC_IB 1 1 0 // D-Cache Index Writeback Invalid +32'b101111?????01001???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 DC_IO 1 1 1 // D-Cache Index Store Tag +32'b101111?????10001???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 DC_LO 1 0 1 // D-Cache Hit Invalid +32'b101111?????10101???????????????? 0 0 0 0 1 1 ? ALIGN 0 0 DC_LB 1 0 0 // D-Cache Hit Writeback Invalid +32'b110011?????????????????????????? 0 0 0 0 0 ? ? ? ? ? ? ? ? ? // PREF (NOP) \ No newline at end of file diff --git a/tools/pcs.txt b/tools/pcs.txt index 3710696..c03017f 100644 --- a/tools/pcs.txt +++ b/tools/pcs.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? 0 0 0 0 // SWL 32'b101011?????????????????????????? 0 0 0 0 // SW 32'b101110?????????????????????????? 0 0 0 0 // SWR +32'b101111?????????????????????????? 0 0 0 0 // CACHE 32'b110011?????????????????????????? 0 0 0 0 // PREF (NOP) \ No newline at end of file diff --git a/tools/privilege.txt b/tools/privilege.txt index f08198f..0c86eb6 100644 --- a/tools/privilege.txt +++ b/tools/privilege.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? 0 // SWL 32'b101011?????????????????????????? 0 // SW 32'b101110?????????????????????????? 0 // SWR +32'b101111?????????????????????????? 0 // CACHE 32'b110011?????????????????????????? 0 // PREF (NOP) \ No newline at end of file diff --git a/tools/wctrl.txt b/tools/wctrl.txt index e375799..cabb946 100644 --- a/tools/wctrl.txt +++ b/tools/wctrl.txt @@ -70,4 +70,5 @@ 32'b101010?????????????????????????? 0 ? ? ? // SWL 32'b101011?????????????????????????? 0 ? ? ? // SW 32'b101110?????????????????????????? 0 ? ? ? // SWR +32'b101111?????????????????????????? 0 ? ? ? // CACHE 32'b110011?????????????????????????? 0 ? ? ? // PREF (NOP) \ No newline at end of file