remove compressed_instr.
This commit is contained in:
parent
6e318265dc
commit
361dba595d
16
picorv32.v
16
picorv32.v
|
@ -371,7 +371,6 @@ module picorv32 #(
|
||||||
reg decoder_trigger_q;
|
reg decoder_trigger_q;
|
||||||
reg decoder_pseudo_trigger;
|
reg decoder_pseudo_trigger;
|
||||||
reg decoder_pseudo_trigger_q;
|
reg decoder_pseudo_trigger_q;
|
||||||
reg compressed_instr;
|
|
||||||
|
|
||||||
reg is_lui_auipc_jal;
|
reg is_lui_auipc_jal;
|
||||||
reg is_lb_lh_lw_lbu_lhu;
|
reg is_lb_lh_lw_lbu_lhu;
|
||||||
|
@ -608,8 +607,6 @@ module picorv32 #(
|
||||||
|
|
||||||
if (mem_rdata_latched[6:0] == 7'b0001011 && mem_rdata_latched[31:25] == 7'b0000010)
|
if (mem_rdata_latched[6:0] == 7'b0001011 && mem_rdata_latched[31:25] == 7'b0000010)
|
||||||
decoded_rs1 <= irqregs_offset; // instr_retirq
|
decoded_rs1 <= irqregs_offset; // instr_retirq
|
||||||
|
|
||||||
compressed_instr <= 0;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if (decoder_trigger && !decoder_pseudo_trigger) begin
|
if (decoder_trigger && !decoder_pseudo_trigger) begin
|
||||||
|
@ -772,7 +769,6 @@ module picorv32 #(
|
||||||
reg latched_store;
|
reg latched_store;
|
||||||
reg latched_stalu;
|
reg latched_stalu;
|
||||||
reg latched_branch;
|
reg latched_branch;
|
||||||
reg latched_compr;
|
|
||||||
reg latched_trace;
|
reg latched_trace;
|
||||||
reg latched_is_lu;
|
reg latched_is_lu;
|
||||||
reg latched_is_lh;
|
reg latched_is_lh;
|
||||||
|
@ -843,7 +839,7 @@ module picorv32 #(
|
||||||
(* parallel_case *)
|
(* parallel_case *)
|
||||||
case (1'b1)
|
case (1'b1)
|
||||||
latched_branch: begin
|
latched_branch: begin
|
||||||
cpuregs_wrdata = reg_pc + (latched_compr ? 2 : 4);
|
cpuregs_wrdata = reg_pc + 4;
|
||||||
cpuregs_write = 1;
|
cpuregs_write = 1;
|
||||||
end
|
end
|
||||||
latched_store && !latched_branch: begin
|
latched_store && !latched_branch: begin
|
||||||
|
@ -851,7 +847,7 @@ module picorv32 #(
|
||||||
cpuregs_write = 1;
|
cpuregs_write = 1;
|
||||||
end
|
end
|
||||||
irq_state[0]: begin
|
irq_state[0]: begin
|
||||||
cpuregs_wrdata = reg_next_pc | latched_compr;
|
cpuregs_wrdata = reg_next_pc;
|
||||||
cpuregs_write = 1;
|
cpuregs_write = 1;
|
||||||
end
|
end
|
||||||
irq_state[1]: begin
|
irq_state[1]: begin
|
||||||
|
@ -972,7 +968,7 @@ module picorv32 #(
|
||||||
`debug($display(
|
`debug($display(
|
||||||
"ST_RD: %2d 0x%08x, BRANCH 0x%08x",
|
"ST_RD: %2d 0x%08x, BRANCH 0x%08x",
|
||||||
latched_rd,
|
latched_rd,
|
||||||
reg_pc + (latched_compr ? 2 : 4),
|
reg_pc + 4,
|
||||||
current_pc
|
current_pc
|
||||||
);)
|
);)
|
||||||
end
|
end
|
||||||
|
@ -1009,23 +1005,21 @@ module picorv32 #(
|
||||||
latched_is_lh <= 0;
|
latched_is_lh <= 0;
|
||||||
latched_is_lb <= 0;
|
latched_is_lb <= 0;
|
||||||
latched_rd <= decoded_rd;
|
latched_rd <= decoded_rd;
|
||||||
latched_compr <= compressed_instr;
|
|
||||||
|
|
||||||
if (((decoder_trigger && !irq_active && !irq_delay && |(irq_pending & ~irq_mask)) || irq_state)) begin
|
if (((decoder_trigger && !irq_active && !irq_delay && |(irq_pending & ~irq_mask)) || irq_state)) begin
|
||||||
irq_state <= irq_state == 2'b00 ? 2'b01 : irq_state == 2'b01 ? 2'b10 : 2'b00;
|
irq_state <= irq_state == 2'b00 ? 2'b01 : irq_state == 2'b01 ? 2'b10 : 2'b00;
|
||||||
latched_compr <= latched_compr;
|
|
||||||
latched_rd <= irqregs_offset | irq_state[0];
|
latched_rd <= irqregs_offset | irq_state[0];
|
||||||
end else if ((decoder_trigger || do_waitirq) && instr_waitirq) begin
|
end else if ((decoder_trigger || do_waitirq) && instr_waitirq) begin
|
||||||
if (irq_pending) begin
|
if (irq_pending) begin
|
||||||
latched_store <= 1;
|
latched_store <= 1;
|
||||||
reg_out <= irq_pending;
|
reg_out <= irq_pending;
|
||||||
reg_next_pc <= current_pc + (compressed_instr ? 2 : 4);
|
reg_next_pc <= current_pc + 4;
|
||||||
mem_do_rinst <= 1;
|
mem_do_rinst <= 1;
|
||||||
end else do_waitirq <= 1;
|
end else do_waitirq <= 1;
|
||||||
end else if (decoder_trigger) begin
|
end else if (decoder_trigger) begin
|
||||||
`debug($display("-- %-0t", $time);)
|
`debug($display("-- %-0t", $time);)
|
||||||
irq_delay <= irq_active;
|
irq_delay <= irq_active;
|
||||||
reg_next_pc <= current_pc + (compressed_instr ? 2 : 4);
|
reg_next_pc <= current_pc + 4;
|
||||||
if (ENABLE_TRACE) latched_trace <= 1;
|
if (ENABLE_TRACE) latched_trace <= 1;
|
||||||
count_instr <= count_instr + 1;
|
count_instr <= count_instr + 1;
|
||||||
if (instr_jal) begin
|
if (instr_jal) begin
|
||||||
|
|
Loading…
Reference in New Issue