More width mismatch fixes
This commit is contained in:
parent
dbe9a7824a
commit
bc274867c0
|
@ -435,7 +435,7 @@ end
|
|||
// preemption level: this masking helps avoid re-taking IRQs in frames that you
|
||||
// have preempted.
|
||||
|
||||
assign meipa = {{MAX_IRQS{1'b0}}, irq_r} | meifa;
|
||||
assign meipa = {{MAX_IRQS-NUM_IRQS{1'b0}}, irq_r} | meifa;
|
||||
|
||||
reg [NUM_IRQS-1:0] eirq_active_above_preempt;
|
||||
reg [NUM_IRQS-1:0] eirq_active_above_ppreempt;
|
||||
|
|
|
@ -84,22 +84,22 @@ end else begin: instr_decompress
|
|||
casez (instr_in[15:0])
|
||||
16'h0: invalid = 1'b1;
|
||||
RV_C_ADDI4SPN: instr_out = RV_NOZ_ADDI | rfmt_rd(rd_s) | rfmt_rs1(5'h2)
|
||||
| ({instr_in[10:7], instr_in[12:11], instr_in[5], instr_in[6], 2'b00} << 20);
|
||||
| {2'h0, instr_in[10:7], instr_in[12:11], instr_in[5], instr_in[6], 2'b00, 20'h00000};
|
||||
RV_C_LW: instr_out = RV_NOZ_LW | rfmt_rd(rd_s) | rfmt_rs1(rs1_s)
|
||||
| ({instr_in[5], instr_in[12:10], instr_in[6], 2'b00} << 20);
|
||||
| {6'h00, instr_in[5], instr_in[12:10], instr_in[6], 2'b00, 20'h00000};
|
||||
RV_C_SW: instr_out = RV_NOZ_SW | rfmt_rs2(rs2_s) | rfmt_rs1(rs1_s)
|
||||
| ({instr_in[11:10], instr_in[6], 2'b00} << 7) | ({instr_in[5], instr_in[12]} << 25);
|
||||
| {5'h00, instr_in[5], instr_in[12], 13'h000, instr_in[11:10], instr_in[6], 2'b00, 7'h00};
|
||||
RV_C_ADDI: instr_out = RV_NOZ_ADDI | rfmt_rd(rd_l) | rfmt_rs1(rs1_l) | imm_ci;
|
||||
RV_C_JAL: instr_out = RV_NOZ_JAL | rfmt_rd(5'h1) | imm_cj;
|
||||
RV_C_J: instr_out = RV_NOZ_JAL | rfmt_rd(5'h0) | imm_cj;
|
||||
RV_C_LI: instr_out = RV_NOZ_ADDI | rfmt_rd(rd_l) | imm_ci;
|
||||
RV_C_LUI: begin
|
||||
if (rd_l == 5'h2) begin
|
||||
// addi6sp
|
||||
// addi16sp
|
||||
instr_out = RV_NOZ_ADDI | rfmt_rd(5'h2) | rfmt_rs1(5'h2) |
|
||||
({{3{instr_in[12]}}, instr_in[4:3], instr_in[5], instr_in[2], instr_in[6]} << 24);
|
||||
{{3{instr_in[12]}}, instr_in[4:3], instr_in[5], instr_in[2], instr_in[6], 24'h000000};
|
||||
end else begin
|
||||
instr_out = RV_NOZ_LUI | rfmt_rd(rd_l) | ({{15{instr_in[12]}}, instr_in[6:2]} << 12);
|
||||
instr_out = RV_NOZ_LUI | rfmt_rd(rd_l) | {{15{instr_in[12]}}, instr_in[6:2], 12'h000};
|
||||
end
|
||||
invalid = ~|{instr_in[12], instr_in[6:2]}; // RESERVED if imm == 0
|
||||
end
|
||||
|
@ -129,12 +129,12 @@ end else begin: instr_decompress
|
|||
end
|
||||
end
|
||||
RV_C_LWSP: begin
|
||||
instr_out = RV_NOZ_LW | rfmt_rd(rd_l) | rfmt_rs1(5'h2)
|
||||
| ({instr_in[3:2], instr_in[12], instr_in[6:4], 2'b00} << 20);
|
||||
instr_out = RV_NOZ_LW | rfmt_rd(rd_l) | rfmt_rs1(5'h2) |
|
||||
{4'h0, instr_in[3:2], instr_in[12], instr_in[6:4], 2'b00, 20'h00000};
|
||||
invalid = ~|rd_l; // RESERVED
|
||||
end
|
||||
RV_C_SWSP: instr_out = RV_NOZ_SW | rfmt_rs2(rs2_l) | rfmt_rs1(5'h2)
|
||||
| ({instr_in[11:9], 2'b00} << 7) | ({instr_in[8:7], instr_in[12]} << 25);
|
||||
| {4'h0, instr_in[8:7], instr_in[12], 13'h0000, instr_in[11:9], 2'b00, 7'h00};
|
||||
RV_C_BEQZ: instr_out = RV_NOZ_BEQ | rfmt_rs1(rs1_s) | imm_cb;
|
||||
RV_C_BNEZ: instr_out = RV_NOZ_BNE | rfmt_rs1(rs1_s) | imm_cb;
|
||||
default: invalid = 1'b1;
|
||||
|
|
Loading…
Reference in New Issue