From 8d36e89a217d1320734f48d9efe3ce01f186f857 Mon Sep 17 00:00:00 2001 From: cxy004 Date: Thu, 4 Aug 2022 14:48:57 +0800 Subject: [PATCH] 2alu linux fix (pmon?) --- src/Core/Controller.sv | 8 ++++---- src/Core/Datapath.sv | 4 +--- tools/global.txt | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Core/Controller.sv b/src/Core/Controller.sv index 5af5dc7..a94a5f5 100644 --- a/src/Core/Controller.sv +++ b/src/Core/Controller.sv @@ -41,10 +41,10 @@ module Controller ( assign ctrl.ERET = ~inst[31] & inst[30] & inst[4]; assign ctrl.OFA = ~inst[26] & ~inst[30] & (~inst[29] & ~inst[31] & ~inst[28] & ~inst[27] & inst[5] & ~inst[0] & ~inst[4] & ~inst[2] & ~inst[3] | inst[29] & ~inst[27] & ~inst[31] & ~inst[28]); - assign ctrl.ES = ~inst[31] & ~inst[27] & (~inst[29] & (~inst[30] & ~inst[28] & ~inst[26] & inst[4] & (inst[5] | inst[3]) | ~inst[28] & inst[26] & inst[19]) | inst[30] & inst[29]) | inst[31] & ~inst[30]; - assign ctrl.ET = ~inst[27] & ~inst[26] & (~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & inst[4] & (inst[5] | inst[3]) | inst[30] & inst[29]); - assign ctrl.ES2 = ~inst[30] & ~inst[28] & ~inst[27] & ~inst[26] & (inst[5] | ~inst[4] & (~inst[3] & inst[2] | inst[3] & ~inst[2] & inst[1])) | inst[29]; - assign ctrl.ET2 = ~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & ~inst[4] & (~inst[3] | ~inst[2] & inst[1]);; + assign ctrl.ES = ~inst[31] & ~inst[27] & (~inst[30] & ~inst[29] & (~inst[28] & ~inst[26] & (~inst[5] & ~inst[4] & inst[3] & ~inst[2] & inst[1] | inst[4] & (inst[5] | inst[3])) | ~inst[28] & inst[26] & inst[19]) | inst[30] & inst[29]) | inst[31] & ~inst[30]; + assign ctrl.ET = ~inst[27] & ~inst[26] & (~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & (~inst[5] & ~inst[4] & inst[3] & ~inst[2] & inst[1] | inst[4] & (inst[5] | inst[3])) | inst[30] & inst[29]); + assign ctrl.ES2 = ~inst[30] & ~inst[28] & ~inst[27] & ~inst[26] & (inst[5] | ~inst[3] & inst[2]) | inst[29]; + assign ctrl.ET2 = ~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[26] & (inst[5] | ~inst[4] & ~inst[3]); assign ctrl.DS = ~inst[26] & (~inst[31] & ~inst[30] & ~inst[29] & ~inst[28] & ~inst[27] & ~inst[4] & inst[3] & ~inst[2] & ~inst[1] | ~inst[31] & ~inst[29] & inst[28]) | ~inst[31] & ~inst[29] & inst[26] & (inst[28] | ~inst[27] & ~inst[19]); assign ctrl.DT = ~inst[31] & ~inst[29] & inst[28] & ~inst[27]; diff --git a/src/Core/Datapath.sv b/src/Core/Datapath.sv index de87754..50c4edf 100644 --- a/src/Core/Datapath.sv +++ b/src/Core/Datapath.sv @@ -207,7 +207,6 @@ module Datapath ( word_t M_I0_B; logic M_I0_ALUvalid; logic M_I0_Overflow; - WCtrl_t M_I0_NowWCtrl; logic M_I0_NowExcValid; logic M_I0_PrevExcValid; logic [4:0] M_I0_PrevExcCode; @@ -1257,7 +1256,6 @@ module Datapath ( M_I0_ALUvalid, M_I0_Overflow ); - assign M_I0_NowWCtrl.RW = M.I0.WCtrl.RW & (~M.I0.MCtrl.RS0[2] | M_I0_ALUvalid); // M.I0.MUL ffenr #(97) M_I0_MAS_ff ( @@ -1506,7 +1504,7 @@ module Datapath ( ffenrc #(5 + 1) W_I0_WCtrl_ff ( clk, rst, - {M.I0.RD, M_I0_NowWCtrl}, + {M.I0.RD, M.I0.WCtrl}, W.en, ~M_go | ~M_I0_go, {W.I0.RD, W.I0.WCtrl} diff --git a/tools/global.txt b/tools/global.txt index f233bd2..b892c39 100644 --- a/tools/global.txt +++ b/tools/global.txt @@ -6,8 +6,8 @@ 32'b000000???????????????00000000100 0 0 0 0 0 0 1 1 0 0 1 1 // SLLV 32'b000000???????????????00000000110 0 0 0 0 0 0 1 1 0 0 1 1 // SRLV 32'b000000???????????????00000000111 0 0 0 0 0 0 1 1 0 0 1 1 // SRAV -32'b000000???????????????00000001010 0 0 0 0 0 0 1 1 0 0 1 1 // MOVZ -32'b000000???????????????00000001011 0 0 0 0 0 0 1 1 0 0 1 1 // MOVN +32'b000000???????????????00000001010 0 0 0 0 1 1 ? ? 0 0 1 1 // MOVZ +32'b000000???????????????00000001011 0 0 0 0 1 1 ? ? 0 0 1 1 // MOVN 32'b000000?????000000000000000001000 0 0 0 0 0 0 0 0 1 0 1 1 // JR 32'b000000?????00000?????00000001001 0 0 0 0 0 0 0 0 1 0 1 1 // JALR 32'b000000????????????????????001100 1 0 0 0 0 0 0 0 0 0 1 1 // SYSCALL